הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   עזרה // imagettftext RTL (https://hosts.co.il/forums/showthread.php?t=97520)

DoLet 28-05-12 16:21

עזרה // imagettftext RTL
 
שלום לכולם,
אני יוצר לעצמי סוג של watermark ב-PHP
אני משתמש ב - imagettftext.
אבל יש לי בעיה של RTL מה הכוונה את הטקסט רואים כמו שצריך (UTF8) בעזרת iconv.
אבל עדיין הוא לא ב- RTL.

דוגמא:

http://srv2.jpg.co.il/1/4fc38a37755d6.png

אשמח לעזרה :).

תודה מראש.

Itay 28-05-12 16:44

אתה מתכוון מיושר לימין?
תבדוק מה האורך של השורה הארוכה/הנקודה שממנה אתה רוצה להתחיל את הטקסט, תוריד מזה את הרוחב של הטקסט בשורה ותתחיל מהנקודה הזאת בצד שמאל את הטקסט

Haimz 28-05-12 16:45

מה אמור להיות הטקסט המקורי בתמונה?
אתה יכול לפשוט לעשות EXPLODE ואז לסדר מהסוף להתחלה את המערך עם array_reverse ..

DoLet 28-05-12 16:47

ציטוט:

נכתב במקור על ידי HHaim (פרסם 845352)
מה אמור להיות הטקסט המקורי בתמונה?
אתה יכול לפשוט לעשות EXPLODE ואז לסדר מהסוף להתחלה את המערך עם array_reverse ..

הוסט צריך להיות בצד ימין ולא בסוף צד שמאל.

meshuga 28-05-12 17:30

תקרא על imagettfbbox ואת שאר החישובים אני משאיר לך...

DoLet 28-05-12 18:21

ציטוט:

נכתב במקור על ידי meshuga (פרסם 845360)
תקרא על imagettfbbox ואת שאר החישובים אני משאיר לך...

זה עוזר ולא עוזר.
הוא נותן לי אפשרות לעשות מיקום פר שורה.
הוא עדיין לא פותר לי את הבעיה של הRTL.

אני אנסה להסביר לך מקווה שתבין:

שאני רושם לדוגמא 2 מילים בRTL כמו בפורום זה ירשום בצורה רגילה:

-------------------שלום עולם.
במידה ולא RTL כמו שצריך זה היה מושך את הטקסט שמאלה לדוגמא אני מוסיף עוד מילה:
--------------שלום עולם יקר.
במקום:
-------------------שלום עולם יקר.

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

חח מקווה שהצלחת להבין משהו

meshuga 28-05-12 18:40

ציטוט:

נכתב במקור על ידי DoLet (פרסם 845372)
זה עוזר ולא עוזר.
הוא נותן לי אפשרות לעשות מיקום פר שורה.
הוא עדיין לא פותר לי את הבעיה של הRTL.

אני אנסה להסביר לך מקווה שתבין:

שאני רושם לדוגמא 2 מילים בRTL כמו בפורום זה ירשום בצורה רגילה:

-------------------שלום עולם.
במידה ולא RTL כמו שצריך זה היה מושך את הטקסט שמאלה לדוגמא אני מוסיף עוד מילה:
--------------שלום עולם יקר.
במקום:
-------------------שלום עולם יקר.

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

חח מקווה שהצלחת להבין משהו

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

DoLet 28-05-12 19:41

ציטוט:

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

אני אחפור יותר בפונקציה כדי לראות.
על כל מקרה אני מודה לך על העזרה :).

meshuga 28-05-12 20:03

ציטוט:

נכתב במקור על ידי DoLet (פרסם 845380)
אני אחפור יותר בפונקציה כדי לראות.
על כל מקרה אני מודה לך על העזרה :).

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

שיהיה בהצלחה.

Erez | TrustMedia.co.il 01-06-12 14:09

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

function hebrew($text){
    
preg_match_all('/./us'$text$ar);
    
$newtext implode('',array_reverse($ar[0]));
    
preg_match_all('/([a-zA-Z0-9 \)\(\.,]+)/',$text,$match);
    foreach(
$match[0] as $v){
        
$newtext str_replace(strrev($v),$v,$newtext);
    }
    return 
$newtext;
}

$text="טקסט ארוך טקסט ארוך טקסט ארוך טקסט ארוך טקסט ארוך טקסט ארוך טקסט ארוך טקסט ארוך";
$size 12;
$x 260;
$y 30;
$maxwidth 55;
$arSize imagettfbbox($size,0,$font,hebrew($text));
$iWidth abs($arSize[2] - $arSize[0]);
$iHeight abs($arSize[7] - $arSize[1]);

imagettftext($im,$size,0,$x-$iWidth,$y,$color,$font,hebrew($text)); 

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

(אני משתמש בקוד פה: http://norris.jokey.co.il/quotes.png)


כל הזמנים הם GMT +2. הזמן כעת הוא 16:25.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ