2014-01-16 2 views
1

Я написал этот образец кода в panda3d, но я не мог использовать право на левый язык и буквы, показанные отдельно. Есть ли способ избежать этого?Справа налево на экране текст в panda3d

# coding=UTF-8 

__author__ = 'asus' 

from direct.showbase.ShowBase import ShowBase 
from direct.task import Task 
from direct.actor.Actor import Actor 
from direct.gui.OnscreenText import OnscreenText 

from direct.gui.DirectGui import * 
from panda3d.core import TextNode 

intro={'ssingle':'شروع بازی تک نفره', 
     'smulti':'شروع بازی دو نفره', 
     'settings':'تنظیمات', 
     'about':'درباره بازی', 
     'exit':'خروج', 
     } 

class World(ShowBase): 
    def __init__(self): 
     global intro 
     i=0 
     ShowBase.__init__(self) 

     for each in intro.keys(): 
      i+=0.05 
      OnscreenText(text = intro.__getitem__(each), pos = (0.95,i),scale = 0.07,fg=(1,0.5,0.5,1),align=TextNode.ACenter,mayChange=1,font=self.loader.loadFont('BRoya.ttf')) 

a=World() 
a.run() 

ответ

3

Используемые библиотеки отсутствует поддержка Unicode BiDi, Шейпинг ...

Самый простой, но не идеальный, попробуйте с FriBiDi Lib:

import pyfribidi2 
. 
. 
OnscreenText(text = pyfribidi2.log2vis(intro.__getitem__(each), base_direction=pyfribidi2.ON), pos = (0.95,i),scale = 0.07,fg=(1,0.5,0.5,1),align=TextNode.ACenter,mayChange=1,font=self.loader.loadFont('BRoya.ttf')) 

Вы можете увидеть также с base_direction=pyfribidi2.RTL

0

Последняя версия Panda3D 1.10 теперь поддерживает рендеринг справа налево и правильное формирование арабского текста, если вы скомпилируете его с поддержкой th Библиотека Harfbuzz включена.

Смежные вопросы