הבעיה
העיקרית של
הכיווניות
הלוגית מקורה
בדו-משמעות
במעברים
מכיוון
מהכיוון
הראשי לכיוון
המשני, והיא
מתבטאת
בהתנהגות
שנראית למשתמש
כבלתי-עקבית
(למרות שהיא
נחשבת, וגם
נקראת, לוגית).
לצורך
ההדגמה, נניח
שהמשתמש
הקליד את
התוים
אבגabc,
ולאחר מכן הוא
מבקש להציב
רווח בין
התוים גc. הדרך
המתבקשת
מבחינת
המשתמש היא
להציב את הסמן
בין שני התוים
הללו ולהקיש
על מקש הרווח.
בשלב זה,
התוכנה צריכה
להיות בדילמה:
האם הכוונה
היא שהרווח
הוא אחרי התו
'ג' או אחרי התו
c? במקרה
שמוד העריכה
היה מימין
לשמאל, התוכנה
מניחה את
הסדרה א > ב > ג >
רווח > a < b < c ואילו
במקרה שמוד
העריכה היה
משמאל לימין,
התוכנה מניחה
את הסדרה א > ב >
ג > a < b < c
> רווח.
בשני המקרים,
על פי עקרון ה-WYSIWYG יש להציב
את הרווח בין
שני התוים
הללו, אבל כיצד
יהיה היצוג
בזכרון? מה
צריכה התוכנה
להחליט?
הדרך של MS-Word לפתרון
הדילמה
מתעלמת
מעקרון ה-WYSIWYG. במקרים
מסויימים, התו
מוכנס על פי
צפיות המשתמש.
אבל במקרים
מסויימים,
כאשר מוד
הפעלה הוא
משמאל לימין, ,
התוכנה מנחשת
שהמשתמש סיים
לערוך את
המחרוזת
הנדונה, ולכן
מוסיפה רווח
משמאל
למחרוזת
המעורבת,
ומקפיצה את
המשתמש שמאלה
למחרוזת,
לקידוד התו
הבא. דרך זו
תואמת תרחיש
ספציפי, שבו
המשתמש מקליד על
פי כללים של
סדר הכתיבה
בשתי השפות,
מבלי להתייחס
למיקום הסמן
בתצוגה.
בתרחישים
אחרים היא
בעייתית,
למשל, אם
המשתמש
התכוון בהמשך
להגיע למצב של
מחרוזת אבג דabc. שינוי
אוטומטי
בהתנהגות של
מישק ההפעלה
על פי שיערוך
של כוונת
המשתמש מהווה
הפרה בוטה של
עקרון שליטת
המשתמש.
במקרים אחרים,
התוכנה מניחה
מוד הפעלה
מימין לשמאל,
ואז תו הרווח
נוסף משמאל
למחרוזת
הדו-לשונית.
משתמש שאינו
מומחה בנושא
הדו-כיווניות
(כגון כותב
מסמך זה) אינו
מסוגל לנבא
באיזה אופן
התוכנה תנהג,
ועליו לנהוג בדרך
של ניסוי
וטעיה על מנת
להגיע לתוצאה
המבוקשת.
דרך אחרת
לפתרון
הדילמה היא
בשיטת
הכיווניות
המפורשת, על
ידי הכנסת
תווי בקרה
במצבים של החלפת
כיוון. תוי
הבקרה
מאפשרים
לציין עבור תוכנת
העריכה מה
יהיה כיוון
ההצגה של מקטע
התווים הבא.
יצוג זה פותר
אמנם את בעיית
הרב-משמעות
שהודגמה לעיל,
אבל המחיר
בתוכנה הוא
כבד, וחברות
התוכנה
עלולות להכשל
בעמידה בתנאים
שהוא מציב.
לצורך ההדגמה,
נניח שהמשתמש מעוניין
להגיע
מהמחרוזת אבגabc למחרוזת
אבגabc
d.
נניח שהמשתמש
הקליד את
הרווח מבלי להקפיד
על מוד
העריכה. בשלב
הראשון, מוד
זה אינו
משמעותי כלפי
המשתמש, כי
בשני המודים
הוא יקבל את
המחרוזת אבגabc d. אבל,
התנהגות
התוכנה בהמשך,
בשלב בו
המשתמש מקליד
את התו d,
תלויה במוד בו
המשתמש הקליד
את תו הרווח.
מכיוון
שהמשתמש
הקליד את תו
הרווח במוד
כיוון מימין
לשמאל, הוא
צריך להפוך את
כיווניות תו
הרווח, שיהיה
עכשיו משמאל
לימין. פירוש
הדבר הוא שתוכנת
העריכה צריכה
לערוך מחדש את
תוי הבקרה, על
מנת להתאים את
הכיווניות של
תו הרווח. הפתרון
של בעיה זו
במצבים
השונים מחייב
בחינה מדוקדקת
של המצבים
השונים,
ותכנות מדויק,
וזוהי דרישה
שקשה לעמוד
בה.
בעיית
הדו-משמעות
במעברי כיוון
מתבטאת גם בתגובה
בלתי מתואמת
למקשי החצים,
לסימון בלתי רציף
וחורג של
קטעים, להיפוך
תוי פיסוק
סימטריים,
למחיקת תוים
שאינה מתואמת
לכיוון הסמן,
ועוד.