אלגוריתם דו-כיווניות של יוניקוד

מתוך ויקיפדיה, האנציקלופדיה החופשית
קפיצה אל: ניווט, חיפוש

אלגוריתם דו-כיווניות של יוניקוד מאפשר קביעת כיוון זרימת מלל במערכות מחשב, מימין לשמאל או משמאל לימין.

כדי לעמד מלל דו-כיווני כהלכה משתמש האלגוריתם בנתון סוג הכיווניות של תווים כדי לנתח את הטקסט ולפרק אותו לקטעים או רצפים של תווים, בעלי כיווניות מסוימת. לכל תו ניתן לקבוע כיווניות חזקה ימין-לשמאל, חזקה שמאל-לימין, חלשה ימין לשמאל, חלשה שמאל-לימין, ונייטרלי. באלגוריתם, תווים מטווח יוניקוד לעברית, ערבית, אשורית ודומותיהם נחשבים בעלי כיווניות ימין-לשמאל חזקה. תווי האלף-בית הלטיני נחשבים בעלי כיווניות שמאל-לימין חזקה. תווי מספרים נחשבים בעלי כיווניות שמאל-לימין חלשה. תווי פיסוק וניקוד נחשבים נייטרליים מבחינת כיוונם.

תוכן עניינים

[עריכה] תווים נייטרליים

בהכללה, קובע האלגוריתם את כיווניותם של תווים נייטרליים בהתאם להקשר שבו הם נמצאים: אם הם נמצאים בין שני תווים בעלי כיווניות חזקה אחת, הם יירשו אותה. לדוגמה, כאשר תווי פיסוק נייטרליים כמו פסיק ונקודה נמצאים בין תווים בעלי כיווניות ימין-לשמאל חזקה הם מקבלים אותה גם הם וממוקמים משמאל לתו האחרון במילה.

תווים יורשים כיווניות

מקרה מורכב מעט יותר הוא כזה שבו התו האחרון הוא בעל כיווניות מסוימת, אך זה הבא אחרי התו הנייטרלי הוא בעלי כיווניות אחרת. במקרה זה, יורש התו הנייטרלי את הכיווניות של התו הבא לפניו ברצף:

תווים יורשים כיווניות

ובכיוון ההפוך:

תווים יורשים כיווניות

מקרה מורכב עוד יותר מתרחש כאשר ישנו רצף של תווים נייטרליים מסוגים שונים הדורש הכרעה כיצד יש לסדרם. כאן, אלגוריתם דו-הכיווניות כשל לעתים ורק בגרסתו האחרונה תוקנו בעיות כמו רצפים של תו>מקף>מספר/תו לטיני. קודם לכן, האלגוריתם שיבש את הסדר ודרש מיישומים שביקשו לתמוך בכיווניות נכונה במקרה נפוץ זה (בעברית) ליישם פתרונות "עוקפי-יוניקוד". בגרסת "אופיס 2000" של ערכת התכנות המשרדיות של מיקרוסופט הוגדרה כיווניות כללית לפסקה, ובהתאם לה התנהגו התווים הנייטרליים כאילו הם בעלי כיווניות ימין-לשמאל או שמאל לימין. בגרסה הנוכחית של האלגוריתם פתרונות כאלו אינם נחוצים. לדוגמה, המשפט הבא יוצג נכון באלגוריתם יוניקוד בגרסתו העדכנית:

תווים יורשים כיווניות

[עריכה] בעיות באלגוריתם

באלגוריתם ישנן עדיין מספר בעיות בשימוש בעברית (ובערבית). לדוגמה, רצף מלל כזה:

תווים יורשים כיווניות

יוצג בשימוש רגיל באופן שגוי:

תווים יורשים כיווניות

מקרה דומה קיים עם הטקסט הבא:

תווים יורשים כיווניות

המוצג באופן שגוי כך:

תווים יורשים כיווניות

כדי לפתור זאת ניתן לעשות שימוש בתווים סמויים מיוחדים המכניסים כיווניות ימין-לשמאל או שמאל-לימין. תוצאה דומה אפשר לקבל כאשר מכניסים רווחי אפס בעלי כיווניות או תווים השוברים או מאחדים "הקשריות" (בערבית). זה אינו פתרון שמשתמשים רגילים יכולים לעשות בו שימוש ובמקרה זה עדיין נדרשת השלמה תוכנתית לחסר.

[עריכה] תווי כיווניות סמויים

תקן יוניקוד מגדיר תווי כיווניות סמויים. תווים אלו אינם נראים במסמך ותפקידם לקבוע את כיווניות הטקסט שנמצא לפניהם ואחריהם.

תו LRM‏ (Left-to-Right Mark) – בעל כיווניות חזקה שמאל-לימין. מכניסים אותו בחלונות באמצעות Alt+0253 במקלדת הנומרית, בפריסת מקלדת עברית. בפריסות מקלדת מסוימות בלינוקס, ניתן להכניסו באמצעות הקשה על Ctrl+Shift+200E, ללא תלות בשפת המקלדת. ב־HTML הוא מוכנס כך: ‎‎‎. בטיוטת התקן הישראלי לפריסת מקלדת עברית ניתן להוסיפו באמצעות הצירוף Alt+9. ‏[1]

תו RLM‏ (Right-to-Left Mark) – בעל כיווניות חזקה ימין-לשמאל ומכניסים אותו באמצעות Alt+0254 במקלדת הנומרית, בפריסת מקלדת עברית. בפריסות מקלדת מסוימות בלינוקס, ניתן להכניסו באמצעות הקשה על Ctrl+Shift+200F, ללא תלות בשפת המקלדת. ב-HTML הוא מוכנס כך: ‎‏‎. בטיוטת התקן הישראלי לפריסת מקלדת עברית ניתן להוסיפו באמצעות הצירוף Alt+0. ‏[1]

תו נייטרלי שיוצב בסמוך לתו LRM, יירש את כיווניותו שהיא שמאל-לימין, ואילו תו נייטרלי שיוצב בסמוך לתו RLM, יירש את כיווניותו שהיא ימין-לשמאל.

דוגמאות לשימוש בתווי כיווניות סמויים:

  • כשרושמים בתוך פסקה עברית את השם הלועזי של חברת Yahoo!‎, סימן הקריאה יופיע משמאל לשם ("Yahoo!"), מכיוון שאחריו יש אות עברית, אבל הוא אמור להופיע מימין. כדי לגרום לו להופיע מימין, אפשר להוסיף אחריו את התו LRM.
  • כשרושמים בתוך פסקה עברית את הפונקציה המתמטית f(x)‎, ייראה הסוגר הסופי כמו סוגר פותח והוא יופיע כאילו לפני האות f‏ ("f(x)"), מכיוון שאחריו יש אות עברית, אבל הוא אמור להופיע בקצה הימני של הביטוי. כדי לגרום לו להופיע נכון בקצה הביטוי, אפשר להוסיף אחריו את התו LRM.
  • כאשר בתוך פסקה עברית יש רשימה של מילים לועזיות שמופרדת בפסיקים, למשל Alice, Bob, Carlos, הפסיקים יופיעו מימין לכל מילה, כי לפניהם ואחריהם יש אותיות לועזיות, וגם סדר המילים יהיה הפוך, אבל הפסיקים אמורים להופיע משמאל לכל מילה: Alice‏, Bob‏, Carlos. כדי לגרום למילים ולפסיקים להופיע בסדר הרצוי יש להוסיף לפני הפסיק את התו RLM.

[עריכה] קישורים חיצוניים

[עריכה] הערות שוליים

כלים אישיים
גרסאות שפה
מרחבי שם
פעולות
ניווט
קהילה
תיבת כלים
דף זה בשפות אחרות
הדפסה/יצוא