SlideShare a Scribd company logo
フォントとテキスト
自己紹介

twitter: @rakusan

(株)ソニックムーブ 倉持佳和

Flash Lite 1.1相当のプレーヤを作ってます
 「海の上のカメ農園 Ameba,GREE」 での iPhone 対応
SWFのテキスト

グリフテキスト
● フォント埋め込み
● 再生環境によらず同じ描画結果
● グリフのアウトラインデータはシェイプ

デバイステキスト
● 再生環境のテキスト描画機能を使用する
● 再生環境によって描画結果が異なる
フォントとテキストのタグ

DefineFont, DefineFontInfo, DefineFontInfo2,
DefineFont2, DefineFont3,
DefineFontAlignZones, DefineFontName,
DefineText, DefineText2, DefineEditText,
CSMTextSettings, DefineFont4
フォントとテキストのタグ

DefineFont, DefineFontInfo, DefineFontInfo2,
DefineFont2, DefineFont3,
DefineFontAlignZones, DefineFontName,
DefineText, DefineText2, DefineEditText,
CSMTextSettings, DefineFont4


 DefineFont + DefineFontInfo → DefineFont2
 DefineTextのTextColorをRGBAに → DefineText2
各タグの関係
PlaceObject2    DefineText             DefineFont
CharacterID=3   CharacterID=3          FontID=1

                 TEXTRECORD
                 FontID=1
                                       DefineFont2
                 TEXTRECORD
                 StyleFlagsHasFont=0
                                       FontID=2


                 TEXTRECORD
                 FontID=2
                          …




PlaceObject2    DefineEditText
CharacterID=4   CharacterID=4
                FontID=2
DefineFont2
                       OffsetTable                          GlyphShapeTable
DefineFont2            UI16[NumGlyphs] or UI32[NumGlyphs]   SHAPE[NumGlyphs]

FontID                  グリフ0のシェイプへのオフセット                     グリフ0のシェイプ
                        グリフ1のシェイプへのオフセット
FontFlagsShiftJIS
FontFlagsWideOffsets    グリフ2のシェイプへのオフセット                     グリフ1のシェイプ
FontFlagsWideCodes

                             …
                                                             グリフ2のシェイプ
FontName
NumGlyphs              CodeTable
                       UI8[NumGlyphs] or UI16[NumGlyphs]
OffsetTable




                                                                 …
CodeTableOffset         グリフ0の文字コード
GlyphShapeTable
                        グリフ1の文字コード
CodeTable
                                                                     EM square
                             …




FontAdvanceTable




                                                                        Q
                       FontAdvanceTable




                                                                                  1024
                       SI16[NumGlyphs]

                        グリフ0の字送り幅

                        グリフ1の字送り幅
                             …




                                                                           1024
DefineText
DefineText
TextMatrix
TextRecords
 TEXTRECORD
 FontID
 TextColor
 XOffset
 YOffset
 TextHeight
 GlyphEntries


                  僕と契約して
   GLYPHENTRY
   GlyphIndex
   GlyphAdvance

   GLYPHENTRY
                  魔法少女になってよ
      …




 TEXTRECORD
     …
DefineText
DefineText
TextMatrix             PlaceObjectのMatrix
TextRecords
 TEXTRECORD
 FontID
 TextColor                  TextMatrix
 XOffset
 YOffset
 TextHeight                      XOffset, YOffset
 GlyphEntries
                                                    TEXTRECORD

                                   僕と契約して
   GLYPHENTRY
   GlyphIndex                                                    TextHeight
                  DefineFont2
   GlyphAdvance
                                   GlyphAdvance
   GLYPHENTRY
                                   魔法少女になってよ
      …




                                  TEXTRECORD           TEXTRECORD
 TEXTRECORD
     …
DefineEditText
DefineEditText
                         DefineTextとは異なり文字の位置取り等を自分で
UseOutlines
WordWrap                 制御する必要がある
Align
LeftMargin
RightMargin
Indent                                            グリフテキストの場合 (UseOutlines=1)
Leading                                            ●   DefineFont2のCodeTableから、文字
                                                       コード→グリフインデックス
   LeftMargin          RightMargin                 ●   グリフインデックスからシャイプや字送
                                                       り幅を得る
    Indent


                                                  デバイステキストの場合 (UseOutlines=0)
                                        Leading
                                                   ●   再生環境のテキスト描画機能を使用
                                                   ●   HTML5 Canvasでは
                                                        ○ measureText()
                                                        ○ fillText()


    字送り幅はDefineFont2のFontAdvanceTable
ご清聴ありがとうございました

More Related Content

PDF
Javaセキュアコーディングセミナー東京第2回講義
PPTX
【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第5回 「配列 と レコード 」
PPTX
【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第2回 ‟変数と型„
PPTX
【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第4回 「Function と Pro...
PDF
プログラミング言語 Ruby 2章 Rubyプログラムの構造と実行
PPT
Start!! Ruby
PDF
オブジェクト指向できていますか?
PDF
ドメイン駆動設計 本格入門
Javaセキュアコーディングセミナー東京第2回講義
【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第5回 「配列 と レコード 」
【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第2回 ‟変数と型„
【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第4回 「Function と Pro...
プログラミング言語 Ruby 2章 Rubyプログラムの構造と実行
Start!! Ruby
オブジェクト指向できていますか?
ドメイン駆動設計 本格入門

What's hot (10)

PDF
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第1回 ‟シューティングゲームのプログラム„
PDF
ビットコインで使われている暗号の基礎を学ぶ
PDF
vimの話20150111
PPTX
Lucene terms extraction
PDF
LITメンター研修_Android0212
PPTX
Financial training chapter6 3rd 'Forward exchange'
PPTX
12_C言語入門 - 読みやすいソースコードを書く
PDF
EXE #4:ブロックチェーン応用のモデルと金融工学
PDF
プログラムの処方箋~健康なコードと病んだコード
PPTX
Java scriptの基礎
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第1回 ‟シューティングゲームのプログラム„
ビットコインで使われている暗号の基礎を学ぶ
vimの話20150111
Lucene terms extraction
LITメンター研修_Android0212
Financial training chapter6 3rd 'Forward exchange'
12_C言語入門 - 読みやすいソースコードを書く
EXE #4:ブロックチェーン応用のモデルと金融工学
プログラムの処方箋~健康なコードと病んだコード
Java scriptの基礎
Ad

Similar to SWF研究会#2 LT フォントとテキスト (20)

PPT
Cocoa勉強会pdf関連
PDF
Aaなゲームをjsで
PDF
Aaなゲームをjsで
PPT
フォントとカーネル Vmのあやしい関係
PPTX
文字コードのお話
KEY
20120620 ngui japanese
PDF
enchantMOON presentation @ Mobile IT Asia & ABC 2013 Spring
PDF
5分でわかるText Kit
PDF
Font is Daiji
PPT
Shape morphing (swfstudy)
KEY
Cocoa勉強会201208
PPTX
Surface SDK オリエンテーション
PDF
【第1回】デザイナーがコードから読み解く、Androidアプリのデザインの幅を広げるコツとTips
PDF
Indesign norikae
PDF
GTMF2012 SpriteStudio と "Unity" と "CoronaSDK" と "ngCore" ! ~組み合わせて改善する 2D ワーク...
PPTX
How to read SWF
PDF
プログラマとデザイナが共有すべきUIに関するAndroidの10の機能
PDF
openFrameworks Workshop in Kanazawa v001
PDF
iOS app hacks all_map
PPTX
【Unity道場スペシャル 2017大阪】カッコいい文字を使おう、そうText meshならね
Cocoa勉強会pdf関連
Aaなゲームをjsで
Aaなゲームをjsで
フォントとカーネル Vmのあやしい関係
文字コードのお話
20120620 ngui japanese
enchantMOON presentation @ Mobile IT Asia & ABC 2013 Spring
5分でわかるText Kit
Font is Daiji
Shape morphing (swfstudy)
Cocoa勉強会201208
Surface SDK オリエンテーション
【第1回】デザイナーがコードから読み解く、Androidアプリのデザインの幅を広げるコツとTips
Indesign norikae
GTMF2012 SpriteStudio と "Unity" と "CoronaSDK" と "ngCore" ! ~組み合わせて改善する 2D ワーク...
How to read SWF
プログラマとデザイナが共有すべきUIに関するAndroidの10の機能
openFrameworks Workshop in Kanazawa v001
iOS app hacks all_map
【Unity道場スペシャル 2017大阪】カッコいい文字を使おう、そうText meshならね
Ad

SWF研究会#2 LT フォントとテキスト

  • 2. 自己紹介 twitter: @rakusan (株)ソニックムーブ 倉持佳和 Flash Lite 1.1相当のプレーヤを作ってます  「海の上のカメ農園 Ameba,GREE」 での iPhone 対応
  • 3. SWFのテキスト グリフテキスト ● フォント埋め込み ● 再生環境によらず同じ描画結果 ● グリフのアウトラインデータはシェイプ デバイステキスト ● 再生環境のテキスト描画機能を使用する ● 再生環境によって描画結果が異なる
  • 4. フォントとテキストのタグ DefineFont, DefineFontInfo, DefineFontInfo2, DefineFont2, DefineFont3, DefineFontAlignZones, DefineFontName, DefineText, DefineText2, DefineEditText, CSMTextSettings, DefineFont4
  • 5. フォントとテキストのタグ DefineFont, DefineFontInfo, DefineFontInfo2, DefineFont2, DefineFont3, DefineFontAlignZones, DefineFontName, DefineText, DefineText2, DefineEditText, CSMTextSettings, DefineFont4 DefineFont + DefineFontInfo → DefineFont2 DefineTextのTextColorをRGBAに → DefineText2
  • 6. 各タグの関係 PlaceObject2 DefineText DefineFont CharacterID=3 CharacterID=3 FontID=1 TEXTRECORD FontID=1 DefineFont2 TEXTRECORD StyleFlagsHasFont=0 FontID=2 TEXTRECORD FontID=2 … PlaceObject2 DefineEditText CharacterID=4 CharacterID=4 FontID=2
  • 7. DefineFont2 OffsetTable GlyphShapeTable DefineFont2 UI16[NumGlyphs] or UI32[NumGlyphs] SHAPE[NumGlyphs] FontID グリフ0のシェイプへのオフセット グリフ0のシェイプ グリフ1のシェイプへのオフセット FontFlagsShiftJIS FontFlagsWideOffsets グリフ2のシェイプへのオフセット グリフ1のシェイプ FontFlagsWideCodes … グリフ2のシェイプ FontName NumGlyphs CodeTable UI8[NumGlyphs] or UI16[NumGlyphs] OffsetTable … CodeTableOffset グリフ0の文字コード GlyphShapeTable グリフ1の文字コード CodeTable EM square … FontAdvanceTable Q FontAdvanceTable 1024 SI16[NumGlyphs] グリフ0の字送り幅 グリフ1の字送り幅 … 1024
  • 8. DefineText DefineText TextMatrix TextRecords TEXTRECORD FontID TextColor XOffset YOffset TextHeight GlyphEntries 僕と契約して GLYPHENTRY GlyphIndex GlyphAdvance GLYPHENTRY 魔法少女になってよ … TEXTRECORD …
  • 9. DefineText DefineText TextMatrix PlaceObjectのMatrix TextRecords TEXTRECORD FontID TextColor TextMatrix XOffset YOffset TextHeight XOffset, YOffset GlyphEntries TEXTRECORD 僕と契約して GLYPHENTRY GlyphIndex TextHeight DefineFont2 GlyphAdvance GlyphAdvance GLYPHENTRY 魔法少女になってよ … TEXTRECORD TEXTRECORD TEXTRECORD …
  • 10. DefineEditText DefineEditText DefineTextとは異なり文字の位置取り等を自分で UseOutlines WordWrap 制御する必要がある Align LeftMargin RightMargin Indent グリフテキストの場合 (UseOutlines=1) Leading ● DefineFont2のCodeTableから、文字 コード→グリフインデックス LeftMargin RightMargin ● グリフインデックスからシャイプや字送 り幅を得る Indent デバイステキストの場合 (UseOutlines=0) Leading ● 再生環境のテキスト描画機能を使用 ● HTML5 Canvasでは ○ measureText() ○ fillText() 字送り幅はDefineFont2のFontAdvanceTable