1

私は小さなpython/pygameプロジェクトを再作成して複数の言語を含めようとしていますが、私が遭遇した問題の1つは、何らかの理由でアクセントやチルダなどが上からトリミングされているため、それらは表示されます。これは、ieの「アクセント付き」大文字のほとんどに適用されます。フランス語、ポーランド語、スペイン語、ドイツ語など。これは、デフォルトのpygameフォントを使用して、Python2.7.2とPython3.2の両方で発生します。

次の文字列をレンダリングしようとしています:'ÀÂÉÈÊËÎÏÔÙÛÜŸ'

結果は次のようにレンダリングされます。 フランス語の手紙

私は、標準のレンダリング/ブリッティング手法を使用していると思います。

    # -*- coding: utf-8 -*-
    #...
    value = 'ÀÂÉÈÊËÎÏÔÙÛÜŸ'
    if sys.version_info < (3, 0):
        try:
            val = unicode(value, "utf-8")
        except UnicodeDecodeError:
            val = value
        text = font.render("%s" % (val), 1, font_color)
    else:
        val = value
        text = font.render("%s" % (val), 1, font_color)
    self.image.blit(text, (300,300))
    #...

誰かが以前にこの問題を抱えていましたか?回避策はありますか?それとも、pygame.font.renderが作成するサーフェスが小さすぎて、上部に必要な余分なスペースを収容できないというだけですか?線の高さを設定する方法があるかもしれませんが、どこにも見つかりませんでした...

4

1 に答える 1

2

使用しているフォントではなく、フォントを指定してみてください(デフォルトのフォントを使用していますか?)-フォントに問題がある可能性があります。-システムで試したすべてのフォントで機能しました。

フルゲームの場合、理想的なソリューションは、プロジェクトと一緒にフォントファイルを配布することです。Pygameは「.ttf」ファイル名でフォントを開くためです。

システムフォントを使用するには、pygame.font.get_fonts()-の呼び出しを連鎖させてフォント名を取得しpygame.font.match_font、フォント名を指定してフォントファイルへのパスを実際に取得し、最後にpygame.font.Fontがそのパスを渡して使用可能なフォントオブジェクトを取得するためのポイントサイズ(renderメソッドを使用)

>>> pygame.font.get_fonts()
[u'lohitbengali', u'liberationserif', u'dejavuserif', u'wenquanyimicroheimono', u'dejavulgcsans', u'arplumingcn', u'msam10', u'jomolhari', u'esint10', u'cmr10', u'arplumingtwmbe', u'dejavusans', u'lohitgujarati', u'lohitpunjabi', u'arplumingtw', u'arpluminghk', u'dejavusansmono', u'lohitassamese', u'lohitkannada', u'wenquanyimicrohei', u'khmeros', u'waree', u'lohittamil', u'wasy10', u'padauk', u'lohitdevanagari', u'paktypenaqsh', u'abyssinicasil', u'meera', u'eufm10', u'cmex10', u'khmerossystem', u'lklug', u'lohitoriya', u'msbm10', u'liberationsans', u'rsfs10', u'opensymbol', u'cmsy10', u'lohittelugu', u'paktypetehreer', u'cmmi10', u'liberationmono', u'khmeroscontent']

>>> f2 = pygame.font.match_font(u'paktypetehreer')
>>> f2
u'/usr/share/fonts/paktype-tehreer/PakType_Tehreer.ttf'
>>> font = pygame.font.Font(f2, 60)
>>> f = font.render(u"maçã, joão", 1, (255,255,255))
>>> scr.blit(f, (200,100))
于 2012-04-15T19:28:59.430 に答える