2017-07-09 13 views
3

私は理解しているように、文字列にはグリフがあり、グリフには個々の文字が含まれている可能性があります。私にとっては、文字列内のいくつかの発音区別記号の色を変更したいので、これは問題です。グリフ内の個々の文字の色を変更する

のは、我々は次の文字列があるとしましょう:私はそれは付加記号だとして別の色子音をしたいと思い、この文字列の場合

วาีม

。私はวามの色を変えたい。

私のテストから、私は個々のグリフを色付けすることしかできないようです。私は文字(発音区別)レベルで色を変えることはできないようです。いくつかの例コード:

let text = NSMutableAttributedString(string: "วาีม") 
text.addAttribute(NSForegroundColorAttributeName, value: UIColor.blue, range: NSMakeRange(0, 1)) 
text.addAttribute(NSForegroundColorAttributeName, value: UIColor.red, range: NSMakeRange(1, 1)) 
text.addAttribute(NSForegroundColorAttributeName, value: UIColor.green, range: NSMakeRange(2, 1)) 
text.addAttribute(NSForegroundColorAttributeName, value: UIColor.orange, range: NSMakeRange(3, 1)) 
label.attributedText = text 

以下のようにレンダリングします:

enter image description here

としては、発音区別符号は緑色で描画されていないことが分かります。

私は望む結果を達成するための方法があるかどうかは知っていますか?

答えて

1

もう1つの方法は、2つのラベルを重ねることです。分音符のために必要な色の分音符号を含むテキストを含むもの。 1つは同じテキストでそれの上にあるのないテキストの色で分けています。

レンダリング時に、テキストの同じビットが正確に取り消され、適切な色のテキストと発音区別記号が残ります。

+1

実際、いくつかの理由でそれらは正しくキャンセルされません。最初に、発音区別記号付きのグリフは、フォント内のエントリとは全く異なるエントリです。 「ベース」文字の形状が同じであり、しばしばそれらが同じではないと考える理由はありません(たとえば、高音区画に合うように)。第二に、たとえ同じ形であっても、アンチエイリアスです。つまり、エッジに部分的に透明なピクセルがあることを意味します。お互いの上に描かれると、色が混ざり合って奇妙な縞模様ができます。 –

+0

フォントの問題はaproposですが、アンチエイリアスの問題が適切かどうかはわかりません。それはパイプラインにいつ起こるかによって決まります。 –

+0

私はあなたの提案されたアプローチを使用して適切な結果を得ることができましたが、アンチエイリアスは本当に問題です。このように、達成したい最終結果は100%ではありません。 –

2

私はあなたがこれを行う良い方法を見つけることは疑いの余地があります。フォント内のาีのグリフは、のグリフとはまったく異なります。たとえば、私のMacのThonburiフォントでは、前者はグリフ1507であり、後者はグリフ78です。フォント内の各グリフエントリは、グリフを描く方法の全く別個の小さな説明です。組み合わされたグリフの場合、分音記号は別個のものではありません。システムは、それがいつ基本文字を描いているのか、それが分音を描いているのかを知る方法がありません。ただ一つのことを描いているだけです。したがって、異なる色を適用することはできません。

私はタイ語に全く慣れていないので、この次の部分については確信していますが、いくつかの言語で確かに当てはまります。シーケンスを組み合わせるグリフがあります。お互いの上にコンポーネント部品を重ねるだけです。したがって、原則として、基本文字に対して視覚的に分離可能な発音区別符号の形があることは明らかではありません。

関連する問題