stone_engineは、日本語の文字組版を実現する、テキストレンダリングエンジンである。
stone_engineは、STLabel
とSTTextView
というクラスを提供する。これは、UIKitにおけるUILabelとUITextViewを置き換えることを意図している。
STLabelは、画面にテキストを表示するためのビュークラスである。編集はできない。次のような特徴を有する。
文字を描画する方向として、LrTb
またはTbRl
を指定できる。TbRlは、いわゆる縦書き表示である。
![]() |
---|
LrTb (横書き表示) |
![]() |
---|
TbRl (縦書き表示) |
縦書き表示では、フォントを描画するときに適切なグリフが選択される。たとえば、句読点、括弧などに適用される。
数字を表示するときは、いわゆる縦中横が反映される。数字が2桁以下のときは、正体で表示される。2桁より大きいとは、90度回転して表示される。
アルファベットは、90度回転して表示される。
![]() |
---|
数字の縦中横表示と、アルファベットの90度回転表示 |
禁則処理は、行頭禁則および行禁則が行われる。禁則の対象となる文字種を指定可能である。
禁則処理の、オン/オフを指定することが可能である。
約物(句読点や括弧類)を、半角で表示させることができる。約物の取り扱い方を、以下のモードで指定することができる。
- 常に全角
- 常に半角
- 前後の文字種や行中の位置で、適切に判断する(stoneモード)
![]() |
---|
常に全角 |
![]() |
---|
常に半角 |
![]() |
---|
stoneモード |
STLabelでは、文字種ごとにフォントを指定することが可能である。
![]() |
---|
日本語フォント:游明朝 ラテン文字フォント:Times New Roman |
![]() |
---|
日本語フォント:游ゴシック ラテン文字フォント:Helvetica |
指定可能な文字種は、Unicodeカテゴリとして定義される。
STLabelでは、文字種ごとに表示するスケールを指定することが可能である。たとえば、日本語フォントとして1.0、ラテン文字フォントとして0.9を指定すると、次のような描画になる。
![]() |
---|
日本語フォントスケール:1.0 ラテン文字フォントスケール:0.9 |
文字寄せとして、以下が指定可能である。
- 行頭
- 中央
- 行末
- 均等
日本語単語分割のオン/オフを指定することができる。これは、改行を行うときに単語を分割するか、しないかを決定するものである。
STTextViewは、テキストの編集を行うためのビュークラスである。STLabelが持つ特徴をすべて有する。