نمایش نتایج 1 تا 15 از 15

نام تاپیک: تغییر رنگ اعراب متون عربی

  1. #1

    تغییر رنگ اعراب متون عربی

    سلام، من هرچی ور رفتم و سرچ کردم چیز درست و در مونی پیدا نکردم، من تو RichTextBox متنو انتخاب میکنم و حرف حرف میخونمش ولی هیچ اعرابی پیدا نمیکنم، کسی کدی چیزی، یا روشی پیشنهادی هرچیزی که کمک کنه ارائه بده ممنون میشم.

    unnamed.png

    for (int i = 0; i < textLength; i++){
    var textRange = rtbQuranTranslate.Selection;


    TextPointer start = quranRuns[0].ContentStart.GetPositionAtOffset(i);
    TextPointer end = quranRuns[0].ContentStart.GetPositionAtOffset(i+1);


    rtbQuranTranslate.Selection.Select(start, end);


    if (rtbQuranTranslate.Selection.Text.Length == 0) continue;


    if (rtbQuranTranslate.Selection.Text.Contains('ُ'))
    {
    textRange.ApplyPropertyValue(TextElement.Foregroun dProperty, new SolidColorBrush(Colors.Blue));
    }
    }


    ---------

    فک کنم فهمیدم، من کاراکترها رو به صورت utf8 میخونم که هر کاراکتر 8 بیت هستش در حالی که کدهای فتحه و کسره و .... که مثلا مقدارشون 1500-1600 هستش یه عدد 2 بایتی هستش و باید از unicode استفاده کنم.؛ به نتیجه رسیدم اینجا پیوست میکنم

    ---------

    مشکلی که الان دارم اینه که کاراکترها رو میخونم، درست هم میخونم، الف ب پ و... فتحه کسره تشدید و... ولی نمیتونم رنگشون رو تغییر بدم، کدم درست کار نمیکنه
    private void ColorRtbText(){
    string text = quranRuns[0].ContentStart.GetTextInRun(LogicalDirection.Forwar d);
    int textLength = text.Length;
    byte[] bytes = Encoding.Unicode.GetBytes(text);


    for (int i = 0; i < textLength; i++)
    {
    TextPointer start = quranRuns[0].ContentStart.GetPositionAtOffset(i + 0, LogicalDirection.Forward);
    TextPointer end = quranRuns[0].ContentStart.GetPositionAtOffset(i + 1, LogicalDirection.Backward);
    var textRange = new TextRange(start, end);

    byte[] characterByte = new byte[] { bytes[2 * i], bytes[2 * i + 1] };
    int I = BitConverter.ToInt16(characterByte, 0); // int I = (bytes[2 * i + 1] << 8 | bytes[2 * i + 0]);
    string S = Encoding.Unicode.GetString(characterByte);
    //---
    MessageBox.Show(">" + S + ">" + ">" + I + ">");


    textRange.ApplyPropertyValue(TextElement.Foregroun dProperty, Brushes.Red);
    }
    }
    آخرین ویرایش به وسیله md3848 : چهارشنبه 26 آذر 1399 در 00:45 صبح

  2. #2

    نقل قول: تغییر رنگ اعراب متون عربی

    کسی نظری؟ ایده یی راه حلی چیزی نداره؟

  3. #3

    نقل قول: تغییر رنگ اعراب متون عربی

    سلام
    با RichTextBox کار نکردم اما یه تستی که کردم ، انگار حرف های "اِعراب" (مثل فتحه و ضمه و کسره و کلا کاراکترهای سجادوندی) را حداقل در تست کد من ، نمیتونه بصورت جداگانه انتخاب کنه (همراه با کلمه ای که اون اِعراب براش بکار برده شد ، انتخاب میکنه) :


    <RichTextBox Name="MyRichTextBox" Loaded="MyRichTextBox_Loaded" Margin="10" Width="300" Height="150" FontSize="35">
    <FlowDocument Name="myDoc">
    <Paragraph>
    <Run Text="تکرارِ متن"/>
    </Paragraph>
    </FlowDocument>
    </RichTextBox>


    و


    this.MyRichTextBox.Focus();


    TextPointer myTextPointer1 = this.MyRichTextBox.Document.ContentStart.GetPositi onAtOffset(1, LogicalDirection.Backward);
    TextPointer myTextPointer2 = this.MyRichTextBox.Document.ContentStart.GetPositi onAtOffset(7, LogicalDirection.Backward);


    TextRange textRange = new TextRange(myTextPointer1, myTextPointer2);


    this.MyRichTextBox.Selection.Select(myTextPointer1 , myTextPointer2);
    textRange.ApplyPropertyValue(TextElement.Foregroun dProperty, Brushes.Red);


    منتظر جواب دوستان باشید .
    آخرین ویرایش به وسیله SajjadKhati : چهارشنبه 10 دی 1399 در 16:30 عصر

  4. #4

    نقل قول: تغییر رنگ اعراب متون عربی

    ساده ترین راه استفاده از فونت شخصی سازی شده هست که داخل اون فونت کاراکترهای موردنظر رو رنگی کنید.

  5. #5

    نقل قول: تغییر رنگ اعراب متون عربی

    ممنون از شما؛ خب من میتونم هر کاراکتر ( حرف و اعراب ) رو جدا جدا بخونم، مشکل اصلی اینه که نمیشه اعراب رو به صورت مجزا Select اش کرد؛ هر کاری هم کردم نشد که نشد، آخرش هم به نتیجه شما رسیدم.
    اما بحث طراحی فونت، فک نکنم راه حلش این باشه، هر چند این باشه هم کار طراحی فونت در قد و قواره من نی، من فونت های زیادی رو تست کردم، تو همشون همین مشکل بود.
    تو اندروید استدیو که دیدم ( حداقل تو نرمافزاراش APK ) این مشکل وجود نداره ( حتی با همون فونت هایی که من تو WPF باهاشون به مشکل خوردم )، چون فونت هایی که برا متن قرآن استفاده میشن، معلومن و بیشتر از 5-10 تا نیستن.

  6. #6

    نقل قول: تغییر رنگ اعراب متون عربی

    این روشو پیدا کردم، که دو تا متن رو روی هم قرار بدی ( کد فوق html هستش ولی خب میشه html رو هم تو wpf استفاده کرد )
    1-متن با اعراب - قرمز ( پایین )
    2-متن بدون اعراب سیاه ( بالا )
    اینطوری متن با رنگ سیاه و اعراب با رنگ قرمز نمایش داده میشه ولی بنا به فونت مورد استفاده و اندازه صفحه، مشکلاتی ایجاد میکنه که بیخیالش شدم.
    https://jsfiddle.net/8mfgmovj/


    من نمیدونم چطوریه تو ورد میشه این کارو کرد، تو اندروید میشه اما تو این Visual Studio نمیشه

  7. #7

    نقل قول: تغییر رنگ اعراب متون عربی

    نقل قول نوشته شده توسط md3848 مشاهده تاپیک
    این روشو پیدا کردم، که دو تا متن رو روی هم قرار بدی ( کد فوق html هستش ولی خب میشه html رو هم تو wpf استفاده کرد )
    1-متن با اعراب - قرمز ( پایین )
    2-متن بدون اعراب سیاه ( بالا )
    اینطوری متن با رنگ سیاه و اعراب با رنگ قرمز نمایش داده میشه ولی بنا به فونت مورد استفاده و اندازه صفحه، مشکلاتی ایجاد میکنه که بیخیالش شدم.
    https://jsfiddle.net/8mfgmovj/


    من نمیدونم چطوریه تو ورد میشه این کارو کرد، تو اندروید میشه اما تو این Visual Studio نمیشه
    بله ، روش جالبه .
    فونت چه مشکلی بوجود میاره؟
    اندازه ی فونت هر دو متن را به یک مقدار بگیرید دیگه .

  8. #8

    نقل قول: تغییر رنگ اعراب متون عربی

    اندازه متن با اعراب با متن بدون اعراب یکسان نمیشه، سر همین داستان میشه، با اکثر فونتا تست کردم، تو بعضیاشون این مشکل کم بود ولی بود!

  9. #9

    نقل قول: تغییر رنگ اعراب متون عربی

    نقل قول نوشته شده توسط md3848 مشاهده تاپیک
    اندازه متن با اعراب با متن بدون اعراب یکسان نمیشه، سر همین داستان میشه، با اکثر فونتا تست کردم، تو بعضیاشون این مشکل کم بود ولی بود!
    کد کامل تون را بذارید .

  10. #10

    نقل قول: تغییر رنگ اعراب متون عربی

    این کد xaml که کنترل WebBrowser داخلش هستش ( نمایش فایل های وب در wpf ) :
    <Grid>    <WebBrowser Name="myWebBrowser"></WebBrowser>
    </Grid>


    کدهای html/css/js و کتابخونه jquery v1.7.2 هم در زیر پیوست کردم ( هر چند همون لینک بالا هم کفایت میکرد بنظرم )؛ فایل های فوق رو اضافه کردید به پروژه، قسمت Copy to output directory رو، روی Copy always تنظیمشون کنید :
    رنگ اعراب - روش1.rar

    اینم نتیجه، البته این دقیق نی ولی خب یه تست ساده که کردم نتیجش شد این، یه متن عربی طولانی رو تست کردم داستان شد
    Untitled.png

  11. #11

    نقل قول: تغییر رنگ اعراب متون عربی

    نقل قول نوشته شده توسط md3848 مشاهده تاپیک
    این کد xaml که کنترل WebBrowser داخلش هستش ( نمایش فایل های وب در wpf ) :
    <Grid>    <WebBrowser Name="myWebBrowser"></WebBrowser>
    </Grid>

    .
    .
    .
    من که ناهماهنگی ای ندیدم .

  12. #12

    نقل قول: تغییر رنگ اعراب متون عربی

    اندازه صفحه رو تغییر بدید، هماهنگی! رو میبینید


  13. #13

    نقل قول: تغییر رنگ اعراب متون عربی

    خب مشکلو با یکم css بازی حل کردم ، خصوصیت position: absolute رو به هر دو span اعمال کردم، اون لینکی که گزاشتم اینکارو نکرده بود، منم توجه نکردم سر همین این مشکل ایجاد میشد؛ حالا باز ور برم ببینم چی میشه به نتیجه خوبی رسیدم پیوست میکنم.

  14. #14

    نقل قول: تغییر رنگ اعراب متون عربی

    نقل قول نوشته شده توسط SajjadKhati مشاهده تاپیک
    سلام
    با RichTextBox کار نکردم اما یه تستی که کردم ، انگار حرف های "اِعراب" (مثل فتحه و ضمه و کسره و کلا کاراکترهای سجادوندی) را حداقل در تست کد من ، نمیتونه بصورت جداگانه انتخاب کنه (همراه با کلمه ای که اون اِعراب براش بکار برده شد ، انتخاب میکنه) :
    این مشکل تو کدنویسی html هم هستش :
    کد HTML:
    <div id="highlight">
         <span style=" color: black; ">ک</span><span style="color: red;">َ</span><span style=" color: black; ">ت</span><span style="color: green;">َ</span><span style=" color: black; ">ب</span><span style="color: green;">َ</span>
    </div>
    Untitled.png



    ------------------------


    انواع روش ها :

    0) تغییر مستقیم رنگ اعراب ها مقدور نی فلذا میریم سراغ روش های دیگه :

    1) دوستمون گفتن فونت شخصی سازی شده ( فونت رنگی )
    خب این روشو من یه تحقیق کوتاه کردم چیز جابیه ولی حالا حالا ها فک کنم کار داره، مشکلاتش :
    1) همه جا پشتیبانی نمیشه، مثلا تو همین کروم تست کردم جواب نداد ( حالا شاید نکته ای چیزی داره که من رعایت نمیکنم )
    2) تو هم که رنگی بودنش نمایش داده نمیشد.
    3) تو ورد رنگی بودنشون نمایش داده میشه.
    4) اما مشکل اصلی : الان من به ازای هر رنگی، باید یه فونت جداگونه طراحی کنم!؟ اینطوری که خیلی داستان میشه، من میخوام این قابلیت رو به کاربر بدم که بتونه رنگ متن و فونت، هر چی دلش خواست تنظیم کنه، نمیخوام محدودیتی از این جهت باشه.
    در زیر 3 تا فونت رنگی قرار دادم، یکی پرچم، یکی نام سوره ها فک کنم، و دیگری متن عربی که 3 تا font family style داره : دانلود
    3262b6d345664a5ca69421d25794cd37.jpg

    با نرم افزار FontLab 7، فونت نبی، رو 4 تا از کاراکتر های پرانتز باز و بسته و فتحه و کسره رو رنگی کردم، نتیجه رو در زیر میبینید، در ضمن فقط رو فوتوشاپ اونم فقط فرمت فونت otf / ttf اونم فقط svg ییش جواب گرفتم ولی خب فک کنم داستان زیاد داره، به قسمت ترکیب تشدید و فتحه دقت کنید! بحث تغییر رنگ توسط کاربر رو هنوز راهی پیدا نکردم براش ( به غیر از این که شونصد تا فونت به رنگ های مختلف ایجاد کنم؛ منظورم یه روش بهتر از اینه، هنوز پیدا نکردم )
    Untitled-2.png
    سوال : یه مشکل بزرگ، من تو WPF نتونستم از این فونت ها استفاده کنم، رنگ متن سیاه میشه، اصلا رنگی نشون داده نمیشه، چیکار کنم؟

    2) نمایش 2 متن روی همدیگه که یکی متن بدون اعرابه و بالا قرار داره و رنگش سیاهه، یکی متن با اعراب و زیر قرار داره و قرمزه، اینطوری کاربر فک میکنه ( میبینه ) یه متنی رو که متنش سیاهه و اعرابش قرمز؛ مشکل این روش اینه که بایت فونت مورد استفاده بهینه باشه، مثلا فونتی داریم که یه اعراب از کاراکتراش حذف بشه، عرض متن تغییر میکنه و یا بعضا روی یه کلمه 2 تا اعراب داریم که اگه اعراب پایینی رو حذف کنیم، اعراب بالایی، میاد پایین و همون جای قبلی نمیمونه و جاش عوض میشه.

    3) تبدیل متن به svg ( این الان به ذهنم رسید، میرم بررسی میکنم )

    4) این بحث تغییر رنگ اعراب ها رو من فک کنم فقط تو اندروید دیدم، حالا نمیدونم اونجا این مشکل وجود نداره یا اونجا هم از روش جاگزینی چیزی استفاده میکنن، در این باره هم سعی میکنم تحقیق کنم ( البته اگه در موارد بالا به نتیجه نرسیدم )؛
    آخرین ویرایش به وسیله md3848 : جمعه 19 دی 1399 در 18:40 عصر

  15. #15

    نقل قول: تغییر رنگ اعراب متون عربی

    اینکه wpf نمیتونه فونت رو به خوبی رندر کنه مربوط میشه به تکنولوژی رندر توی wpf و uwp که خوب کاملا مشخصه uwp امکانات بهتری رو داره
    به عنوان راه حل من الان 2 تا چیز به ذهنم میرسه:
    یک اینکه حروف رو بصورت کد اسکی و یونیکد و این جور داستان ها بخونی و تغییر رنگ بدی
    دو اینکه از متن فرمت بندی شده استفاده کنی یه نمونه براتون مینویسم البته این مثال کل متن رو تغییر میده ولی بنظرم اگر کمی باهاش تمرین کنید شاید بتونید چیزی که میخواید رو بدست بیارید
    private Drawing DrawMyText(string textString)
    {
    DrawingGroup drawingGroup = new DrawingGroup();


    using (DrawingContext drawingContext = drawingGroup.Open())
    {
    FormattedText formattedText = new FormattedText(
    textString,
    CultureInfo.GetCultureInfo("en-us"),
    FlowDirection.LeftToRight,
    new Typeface("Comic Sans MS Bold"),
    48,
    System.Windows.Media.Brushes.Black // This brush does not matter since we use the geometry of the text.
    );


    Geometry textGeometry = formattedText.BuildGeometry(new System.Windows.Point(20, 0));
    drawingContext.DrawRoundedRectangle(System.Windows .Media.Brushes.PapayaWhip, null, new Rect(new System.Windows.Size(formattedText.Width + 50, formattedText.Height + 5)), 5.0, 5.0);
    drawingContext.DrawGeometry(System.Windows.Media.B rushes.Gold, new System.Windows.Media.Pen(System.Windows.Media.Brus hes.Maroon, 1.5), textGeometry);
    return drawingGroup;
    }
    }

    نحوه استفاده هم به این صورت هست که یه کنترل بزارید روی فرمتون (مثل textblock یا هر کنترل دیگه) :
    xx.Background = new DrawingBrush(DrawMyText("مُحَمّد"));

تاپیک های مشابه

  1. پاسخ: 1
    آخرین پست: جمعه 24 بهمن 1393, 22:27 عصر
  2. نحوه تغییر رنگ اعراب در متون عربی
    نوشته شده توسط hossein_sys در بخش Android Studio
    پاسخ: 4
    آخرین پست: دوشنبه 13 بهمن 1393, 19:59 عصر
  3. مشکل با تغییر رنگ باتوم
    نوشته شده توسط bagion در بخش VB.NET
    پاسخ: 3
    آخرین پست: سه شنبه 14 آبان 1392, 18:22 عصر
  4. سوال: تغییر رنگ باتون
    نوشته شده توسط c4soft در بخش Access
    پاسخ: 4
    آخرین پست: دوشنبه 09 اسفند 1389, 14:11 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •