ויקיפדיה:ניקוד
מתוך ויקיפדיה, האנציקלופדיה החופשית
ניקוד במדיה-ויקי הוא בעייתי. בעתיד נתמקד כאן בכל מה שקשור לניקוד בוויקיפדיה - מדיניות, תמיכה טכנית וכדומה; אך כיום הדף הזה יוקדש למעקב אחרי הבעייה.
באביב 2005 התחלנו להיתקל בצרות בכתיבת הניקוד. לבסוף התברר לנו שמדובר בבעייה בתמיכת הניקוד במדיה-ויקי.
אפיון הבאג הוא פשוט: שני סימני ניקוד מסתדרים בסדר מוזר אך קבוע, שכל קשר בינו לבין סדרם המקורי מקרי בהחלט.
לטיפול בבעיה הבאנו לידיעת המפתחים (בעיקר Brion Vibber, אחד המפתחים הראשיים ואחראי הגרסאות של מדיה-ויקי), הסברנו את פרטיה ואפילו הצענו תיקון - אך הבעייה מעוגנת בתקן יוניקוד, ולפיכך לא מוכנים לפתור אותה.
הבעייה חמורה אף יותר כיוון שהיא נגרמת בעת השמירה, ולא בעת התצוגה - כלומר, תיקון הנזקים של הבעייה קשה, גם במקרה הבלתי סביר שהיא תתוקן (לדוגמה, אם תקן יוניקוד יתוקן).
תוכן עניינים |
[עריכה] איפיון הבעייה
ראשית כל, כדי שנוכל להשתמש בשפה מקובלת, תווי הניקוד קרויים גם Combining characters וכן Non-spacing marks.
התחקות אחרי מקורות הבעייה מגלה את התמונה העגומה הבאה: בכל טקסט הנשלח למדיה-ויקי, יהא אשר יהא, נגרמת הבעייה. השורש הסופי של הבעייה הוא הפונקציה UtfNormal::fastCombiningSort בקובץ UtfNormal.php.
פונקציה זו מקבלת רשימה של תווים עם מספרים, ותפקידה לסדר את הצמודים שביניהם בתוך המחרוזת לפי סדר המספרים באופן ראשי, לפי סדר הופעתם באופן משני. לדוגמה, המספר של הדגש הוא 21, והמספר של הקמץ הוא 18 (למעשה, מספרם של כל תווי הניקוד פחות מן הדגש). לפיכך מסודרים כל סימני הניקוד לפני הדגש, דבר שאינו נכון. תקן יוניקוד מורה לעשות את הדבר הזה.
הרשימה המלאה של המספרים היא כדלהלן (היא מוגדרת בצורה מקוצרת בקובץ UtfNormalData.inc, במערך utfCombiningClass):
Array ( [̀] => 230 [́] => 230 [̂] => 230 [̃] => 230 [̄] => 230 [̅] => 230 [̆] => 230 [̇] => 230 [̈] => 230 [̉] => 230 [̊] => 230 [̋] => 230 [̌] => 230 [̍] => 230 [̎] => 230 [̏] => 230 [̐] => 230 [̑] => 230 [̒] => 230 [̓] => 230 [̔] => 230 [̕] => 232 [̖] => 220 [̗] => 220 [̘] => 220 [̙] => 220 [̚] => 232 [̛] => 216 [̜] => 220 [̝] => 220 [̞] => 220 [̟] => 220 [̠] => 220 [̡] => 202 [̢] => 202 [̣] => 220 [̤] => 220 [̥] => 220 [̦] => 220 [̧] => 202 [̨] => 202 [̩] => 220 [̪] => 220 [̫] => 220 [̬] => 220 [̭] => 220 [̮] => 220 [̯] => 220 [̰] => 220 [̱] => 220 [̲] => 220 [̳] => 220 [̴] => 1 [̵] => 1 [̶] => 1 [̷] => 1 [̸] => 1 [̹] => 220 [̺] => 220 [̻] => 220 [̼] => 220 [̽] => 230 [̾] => 230 [̿] => 230 [̀] => 230 [́] => 230 [͂] => 230 [̓] => 230 [̈́] => 230 [ͅ] => 240 [͆] => 230 [͇] => 220 [͈] => 220 [͉] => 220 [͊] => 230 [͋] => 230 [͌] => 230 [͍] => 220 [͎] => 220 [͐] => 230 [͑] => 230 [͒] => 230 [͓] => 220 [͔] => 220 [͕] => 220 [͖] => 220 [͗] => 230 [͘] => 232 [͙] => 220 [͚] => 220 [͛] => 230 [͜] => 233 [͝] => 234 [͞] => 234 [͟] => 233 [͠] => 234 [͡] => 234 [͢] => 233 [ͣ] => 230 [ͤ] => 230 [ͥ] => 230 [ͦ] => 230 [ͧ] => 230 [ͨ] => 230 [ͩ] => 230 [ͪ] => 230 [ͫ] => 230 [ͬ] => 230 [ͭ] => 230 [ͮ] => 230 [ͯ] => 230 [҃] => 230 [҄] => 230 [҅] => 230 [҆] => 230 [֑] => 220 [֒] => 230 [֓] => 230 [֔] => 230 [֕] => 230 [֖] => 220 [֗] => 230 [֘] => 230 [֙] => 230 [֚] => 222 [֛] => 220 [֜] => 230 [֝] => 230 [֞] => 230 [֟] => 230 [֠] => 230 [֡] => 230 [֢] => 220 [֣] => 220 [֤] => 220 [֥] => 220 [֦] => 220 [֧] => 220 [֨] => 230 [֩] => 230 [֪] => 220 [֫] => 230 [֬] => 230 [֭] => 222 [֮] => 228 [֯] => 230 [ְ] => 10 [ֱ] => 11 [ֲ] => 12 [ֳ] => 13 [ִ] => 14 [ֵ] => 15 [ֶ] => 16 [ַ] => 17 [ָ] => 18 [ֹ] => 19 [ֻ] => 20 [ּ] => 21 [ֽ] => 22 [ֿ] => 23 [ׁ] => 24 [ׂ] => 25 [ׄ] => 230 [ׅ] => 220 [ׇ] => 18 [ؐ] => 230 [ؑ] => 230 [ؒ] => 230 [ؓ] => 230 [ؔ] => 230 [ؕ] => 230 [ً] => 27 [ٌ] => 28 [ٍ] => 29 [َ] => 30 [ُ] => 31 [ِ] => 32 [ّ] => 33 [ْ] => 34 [ٓ] => 230 [ٔ] => 230 [ٕ] => 220 [ٖ] => 220 [ٗ] => 230 [٘] => 230 [ٙ] => 230 [ٚ] => 230 [ٛ] => 230 [ٜ] => 220 [ٝ] => 230 [ٞ] => 230 [ٰ] => 35 [ۖ] => 230 [ۗ] => 230 [ۘ] => 230 [ۙ] => 230 [ۚ] => 230 [ۛ] => 230 [ۜ] => 230 [۟] => 230 [۠] => 230 [ۡ] => 230 [ۢ] => 230 [ۣ] => 220 [ۤ] => 230 [ۧ] => 230 [ۨ] => 230 [۪] => 220 [۫] => 230 [۬] => 230 [ۭ] => 220 [ܑ] => 36 [ܰ] => 230 [ܱ] => 220 [ܲ] => 230 [ܳ] => 230 [ܴ] => 220 [ܵ] => 230 [ܶ] => 230 [ܷ] => 220 [ܸ] => 220 [ܹ] => 220 [ܺ] => 230 [ܻ] => 220 [ܼ] => 220 [ܽ] => 230 [ܾ] => 220 [ܿ] => 230 [݀] => 230 [݁] => 230 [݂] => 220 [݃] => 230 [݄] => 220 [݅] => 230 [݆] => 220 [݇] => 230 [݈] => 220 [݉] => 230 [݊] => 230 [़] => 7 [्] => 9 [॑] => 230 [॒] => 220 [॓] => 230 [॔] => 230 [়] => 7 [্] => 9 [਼] => 7 [੍] => 9 [઼] => 7 [્] => 9 [଼] => 7 [୍] => 9 [்] => 9 [్] => 9 [ౕ] => 84 [ౖ] => 91 [಼] => 7 [್] => 9 [്] => 9 [්] => 9 [ุ] => 103 [ู] => 103 [ฺ] => 9 [่] => 107 [้] => 107 [๊] => 107 [๋] => 107 [ຸ] => 118 [ູ] => 118 [່] => 122 [້] => 122 [໊] => 122 [໋] => 122 [༘] => 220 [༙] => 220 [༵] => 220 [༷] => 220 [༹] => 216 [ཱ] => 129 [ི] => 130 [ུ] => 132 [ེ] => 130 [ཻ] => 130 [ོ] => 130 [ཽ] => 130 [ྀ] => 130 [ྂ] => 230 [ྃ] => 230 [྄] => 9 [྆] => 230 [྇] => 230 [࿆] => 220 [့] => 7 [္] => 9 [፟] => 230 [᜔] => 9 [᜴] => 9 [្] => 9 [៝] => 230 [ᢩ] => 228 [᤹] => 222 [᤺] => 230 [᤻] => 220 [ᨗ] => 230 [ᨘ] => 220 [᷀] => 230 [᷁] => 230 [᷂] => 220 [᷃] => 230 [⃐] => 230 [⃑] => 230 [⃒] => 1 [⃓] => 1 [⃔] => 230 [⃕] => 230 [⃖] => 230 [⃗] => 230 [⃘] => 1 [⃙] => 1 [⃚] => 1 [⃛] => 230 [⃜] => 230 [⃡] => 230 [⃥] => 1 [⃦] => 1 [⃧] => 230 [⃨] => 220 [⃩] => 230 [⃪] => 1 [⃫] => 1 [〪] => 218 [〫] => 228 [〬] => 232 [〭] => 222 [〮] => 224 [〯] => 224 [゙] => 8 [゚] => 8 [꠆] => 9 [ﬞ] => 26 [︠] => 230 [︡] => 230 [︢] => 230 [︣] => 230 [𐨍] => 220 [𐨏] => 230 [𐨸] => 230 [𐨹] => 1 [𐨺] => 220 [𐨿] => 9 [𝅥] => 216 [𝅦] => 216 [𝅧] => 1 [𝅨] => 1 [𝅩] => 1 [𝅭] => 226 [𝅮] => 216 [𝅯] => 216 [𝅰] => 216 [𝅱] => 216 [𝅲] => 216 [𝅻] => 220 [𝅼] => 220 [𝅽] => 220 [𝅾] => 220 [𝅿] => 220 [𝆀] => 220 [𝆁] => 220 [𝆂] => 220 [𝆅] => 230 [𝆆] => 230 [𝆇] => 230 [𝆈] => 230 [𝆉] => 230 [𝆊] => 220 [𝆋] => 220 [𝆪] => 230 [𝆫] => 230 [𝆬] => 230 [𝆭] => 230 [𝉂] => 230 [𝉃] => 230 [𝉄] => 230 )
סימני הניקוד הגיעו לשם כיוון שהם מוגדרים בתקן יוניקוד כסימנים שהם Combined - כלומר, מצורפים לאות שלפניהם.
כך או כך, פונקציה זו מחזירה את הטקסט פגום, בסופו של דבר, וכך הוא מתקבל לבסוף.
ולבסוף, הבעייה אינה מופיעה ב-Windows XP Service Pack 2 כיוון שמערכת ההפעלה הזו (ונראה שאפילו ערכת השירות הזו בלבד) מציגה את הדגש בתוך האות גם אם הוא אחרי הניקוד. אך זה פיתרון נקודתי ולא קשור לבאג האמיתי.
[עריכה] שיקום נזקי הבעייה
לאחר פיתרון הבעייה, ניתן יהיה להחליף מופעים צמודים ושגויים של דגשים וסימני ניקוד באמצעות בוט ההחלפות. לפניה, אפשר יהיה להוסיף ביניהם סימן בלתי נראה, וכך להפריד ביניהם.
[עריכה] דיונים על הבעייה עד כה
- ויקיפדיה:באגים
- ויקיפדיה:מזנון/ארכיון 78
- ויקיפדיה:דלפק ייעוץ/ארכיון14 (בשני מקומות בעמוד: סעיפים 2 ו-29)
- שיחה:בניינים בעברית
- ויקיפדיה:מזנון/ארכיון 95#ניקוד
- ויקיפדיה:מזנון/ארכיון 105#פרויקט הניקוד הגדול
- ויקיפדיה:דלפק ייעוץ/ארכיון30#לא מצליחה להדביק טקסט מנוקד בערך 'לאה גולדברג' ובמשך תחת הכותרת 'שוב עניין הניקוד'
[עריכה] מי מוכן לעזור?
- Dovi 18:53, 17 אפר' 2005 (UTC)
- נתנאל 19:28, 17 אפר' 2005 (UTC)
- מלח השמים 00:24, 18 אפר' 2005 (UTC) ערכתי בשעה האחרונה מספר בדיקות ובהמשך הדף אציג את מסקנותי. נראה לי שכדאי לפתוח כאן דיון בנושא.
- Danny 01:41, 5 יוני 2005 (UTC) אדבר עם בריון על זה מיד.
- rotemliss – שיחה 17:35, 7 אפריל 2006 (UTC) גיליתי מה הבעייה, ויש לי הצעות לעקיפתה.
- דלמוזיאן - שיחה 22:46, 4 יוני 2006 (IDT) זמני אינו רב, למען האמת, אבל אשמח להושיט עזרה בנידון
[עריכה] הדיווח על הבאג
באג 2399 מדווח על הבעייה, אך ללא הועיל, כיוון שהמפתחים מסרבים לתקנו ללא תיקון בתקן יוניקוד, וכן עקב העובדה שהוא לכאורה טופל ב-Windows XP Service Pack 2.
- סוף סוף נמצא שימוש מסחרי בוויקיפדיה, והייתי צריך לדעת מראש שמיקרוסופט תהיה הראשונה לנצל מכרה זהב זה לקידום עסקיה :-) דוד שי 21:35, 26 אוקטובר 2005 (UTC)
בינתיים, ניתן להצביע עבור תיקון הבאג, באמצעות הקישור Vote for this bug. (יש להירשם בשביל להצביע.)