らんだむな記憶

blogというものを体験してみようか!的なー

EBDT(4)


□□□□□□□□□□□□
□□□■■□□■■□□□
□□■□■□□■□■□□
□□■■□□□□■■□□
□□□□□□□□□□□□
□□□□□□□□□□□□
□□□□□□□□□□□□
□□■■■■■■■■□□
□□■■□□□□■■□□
□□□■■□□■■□□□
□□□□□■■□□□□□
□□□□□□□□□□□□
EBDT(1) - らんだむな記憶スクリプトで16進数にした

00019829
430c0000
000003fc
30c19806
0000

を使う。
EBDT(3) - らんだむな記憶でM+ BITMAP FONTSをTTFに変換してEBLCを取り出して適当に加工する。EBDTには上記のhex値を放り込む。
[sample_bmp12.xml]

<?xml version="1.0" encoding="UTF-8"?>
<ttFont sfntVersion="\x00\x01\x00\x00" ttLibVersion="3.40">

  <EBLC>
    <header version="2.0"/>
    <strike index="0">
      <bitmapSizeTable>
        <sbitLineMetrics direction="hori">
          <ascender value="12"/>
          <descender value="12"/>
          <widthMax value="12"/>
          <caretSlopeNumerator value="1"/>
          <caretSlopeDenominator value="0"/>
          <caretOffset value="0"/>
          <minOriginSB value="0"/>
          <minAdvanceSB value="12"/>
          <maxBeforeBL value="12"/>
          <minAfterBL value="12"/>
          <pad1 value="0"/>
          <pad2 value="0"/>
        </sbitLineMetrics>
        <sbitLineMetrics direction="vert">
          <ascender value="0"/>
          <descender value="0"/>
          <widthMax value="0"/>
          <caretSlopeNumerator value="0"/>
          <caretSlopeDenominator value="0"/>
          <caretOffset value="0"/>
          <minOriginSB value="0"/>
          <minAdvanceSB value="0"/>
          <maxBeforeBL value="0"/>
          <minAfterBL value="0"/>
          <pad1 value="0"/>
          <pad2 value="0"/>
        </sbitLineMetrics>
        <colorRef value="0"/>
        <startGlyphIndex value="1205"/>
        <endGlyphIndex value="1205"/>
        <ppemX value="12"/>
        <ppemY value="12"/>
        <bitDepth value="1"/>
        <flags value="1"/>
      </bitmapSizeTable>
      <!-- GlyphIds are written but not read. The firstGlyphIndex and
           lastGlyphIndex values will be recalculated by the compiler. -->
      <eblc_index_sub_table_2 imageFormat="5" firstGlyphIndex="1205" lastGlyphIndex="1205">
        <imageSize value="20"/>
        <BigGlyphMetrics>
          <height value="12"/>
          <width value="12"/>
          <horiBearingX value="0"/>
          <horiBearingY value="12"/>
          <horiAdvance value="12"/>
          <vertBearingX value="-6"/>
          <vertBearingY value="0"/>
          <vertAdvance value="12"/>
        </BigGlyphMetrics>
        <glyphLoc id="1205" name="cid01461"/>
       </eblc_index_sub_table_2>
    </strike>
  </EBLC>

  <EBDT>
    <header version="2.0"/>
    <strikedata index="0">
      <ebdt_bitmap_format_5 name="cid01461">
        <rawimagedata>
          00019829 430c0000
          000003fc 30c19806
          0000
        </rawimagedata>
      </ebdt_bitmap_format_5>
    </strikedata>
  </EBDT>

</ttFont>

これを源ノ角ゴシック JPに書きこむ。OTFは適当にTTFに変換しておく。(ここで、GID+1205=CID+1461は源ノ角ゴシック JPの「あ」に相当する)

ttx -m SourceHanSansJP-Regular.ttf sample_bmp12.xml

メモ帳あたりで、12*(72/96) = 9ptのフォントサイズを指定して表示させる。「あ」として変な顔文字が出ることが確認できる。この時、Windowsのディスプレイ設定が125%だとサイズが合わなくなるようで100%にしておかないとうまく合わない。Wordみたいに動的にスケールを変化させられるアプリの場合、スライダーを調整して丁度良い大きさにすると「あ」が変な顔文字になる。
f:id:derwind:20190522225926p:plain