SlideShare una empresa de Scribd logo
1 de 24
SWFバージョン4においての
テキスト形式による
コンパイル結果の違い及び
JavaScriptでの
その描画方法に関する考察
株式会社サイバーエージェント
アメーバ事業本部
ソーシャルゲームDiv エンジニアG
小坂 和弘
@hyperdash
Summary.
・Swineにおけるテキスト描画方法の考察
・Flash Professionalで配置したテキストの
設定によるコンパイル結果のパターン
・パターン別描画戦略
・実際に実装した方法 (SVG Font)
・JSLint
Swine?
・内製SWF to HTML5変換エンジン
・iOS (iPhone) がメインターゲット
・サーバサイド (Java) でSWFをJSON中間コードに変換
・JavaScript, HTML5 (Canvas) + CSS3で再生
・ActionScript 1.0 (Flash Lite 1.1) = SWFバージョン4 対応
・ブーシュカ (iPhone版) で導入済み
Milestone.
・DOM操作の削減
・描画の完全Canvas化 (高速化)
・SAP提供
・Android対応 (?)
SWF Text.
・2パターンのコンパイル結果
・DefineText (+ DefineText2) タグ
・テキスト形式が静的テキスト
・フォントが埋め込みフォント
・アンチエイリアス設定が
『デバイスフォントを使用』以外
・選択可能設定がオフ
・DefineEditText タグ
・さらに3パターンに分類する
・テキスト形式
・埋め込みフォント/デバイスフォント
・アンチエイリアス設定
A
・デバイスフォント
(端末にインストールされているフォントを使用)
・HTMLのテキストとしてレンダリングする
・CSSに反映
B
・埋め込みフォント
(端末にインストールされていない・各Glyphのパス情報)
・CanvasでGlyphを描画
・レイアウト情報に従ってGlyphを配置
C
・パスワード入力
・アスタリスク以外のGlyphが不要
・埋め込みフォントもデバイスフォントで代替
D
・デバイスフォントと埋込みフォントが混在可能
・パターンAとパターンBを組み合わせる
・divでさらに1階層wrap
Implementation in Action.
・デバイスフォントの場合は問題なし
・埋め込みフォントの場合 (Canvas)
・全Glyphのパス描画が必要
・ColorTransform時にパスの再描画が必要
・レイアウトがムズい
SVG Font?
・Webフォントが対応するフォーマットの一種
・SVGフォーマットでフォントを定義
・Androidのブラウザでも利用可能
・ブラウザによって実装にバグが…
(missing-glyphの扱い etc)
・W3Cの仕様にブラウザが追いついていない
(pathエレメントでGlyphパス定義ができない etc)
SVG Font.
・SWFに埋め込まれたフォントのパス情報を
SVGフォントに変換
・BASE64エンコードして中間JSONに格納
・@font-faceのsrcにData URI Schemeで指定
(StyleSheetにinsertRuleする)
・あとは通常のテキストとして描画
・著作権に留意が必要
1
Original SWF Swine
2
Original SWF Swine
3
Original SWF Swine
JSLint?
・JSコーディングルールチェッカー
・by Douglas Crockford
・JSの書き方は人によって結構違う
・Swineチームで試験的に導入
・とはいえパフォーマンス優先
・いくつかルールから除外
・他にGoogle JS Style Guideも参考
ありがとうございました。
20120420

Más contenido relacionado

La actualidad más candente

最近誰かに「やったほうがいいよ」と伝えた7のこと
最近誰かに「やったほうがいいよ」と伝えた7のこと最近誰かに「やったほうがいいよ」と伝えた7のこと
最近誰かに「やったほうがいいよ」と伝えた7のこと
Noriaki Kadota
 

La actualidad más candente (20)

オープンソースCMSにみる、現場で使えるjava scriptライブラリ
オープンソースCMSにみる、現場で使えるjava scriptライブラリオープンソースCMSにみる、現場で使えるjava scriptライブラリ
オープンソースCMSにみる、現場で使えるjava scriptライブラリ
 
サーバ管理はサーバレスで
サーバ管理はサーバレスでサーバ管理はサーバレスで
サーバ管理はサーバレスで
 
WP REST API の活用事例と今後
WP REST API の活用事例と今後WP REST API の活用事例と今後
WP REST API の活用事例と今後
 
JSUG 20141127 「Spring Bootを用いたドメイン駆動設計」
JSUG 20141127 「Spring Bootを用いたドメイン駆動設計」JSUG 20141127 「Spring Bootを用いたドメイン駆動設計」
JSUG 20141127 「Spring Bootを用いたドメイン駆動設計」
 
我が家のフロントエンド開発事情
我が家のフロントエンド開発事情我が家のフロントエンド開発事情
我が家のフロントエンド開発事情
 
DevLove Kansai AWS
DevLove Kansai AWSDevLove Kansai AWS
DevLove Kansai AWS
 
マークアップエンジニアと情報アーキテクチャ
マークアップエンジニアと情報アーキテクチャマークアップエンジニアと情報アーキテクチャ
マークアップエンジニアと情報アーキテクチャ
 
最近誰かに「やったほうがいいよ」と伝えた7のこと
最近誰かに「やったほうがいいよ」と伝えた7のこと最近誰かに「やったほうがいいよ」と伝えた7のこと
最近誰かに「やったほうがいいよ」と伝えた7のこと
 
WorcCamp Kansai 2015 LT大会
WorcCamp Kansai 2015 LT大会WorcCamp Kansai 2015 LT大会
WorcCamp Kansai 2015 LT大会
 
Team Foundation Serivceを使ってみる
Team Foundation Serivceを使ってみるTeam Foundation Serivceを使ってみる
Team Foundation Serivceを使ってみる
 
baserCMSのstripe連携プラグインを作った話
baserCMSのstripe連携プラグインを作った話baserCMSのstripe連携プラグインを作った話
baserCMSのstripe連携プラグインを作った話
 
イマドキのCMSトレンドからWeb運用を再考する
イマドキのCMSトレンドからWeb運用を再考するイマドキのCMSトレンドからWeb運用を再考する
イマドキのCMSトレンドからWeb運用を再考する
 
【CodeCamp】JavaScriptの教科書サンプル
【CodeCamp】JavaScriptの教科書サンプル【CodeCamp】JavaScriptの教科書サンプル
【CodeCamp】JavaScriptの教科書サンプル
 
CSSフレームワークとCMS+RWDテンプレでレスポンシブWebデザインサイトを構築しよう
CSSフレームワークとCMS+RWDテンプレでレスポンシブWebデザインサイトを構築しようCSSフレームワークとCMS+RWDテンプレでレスポンシブWebデザインサイトを構築しよう
CSSフレームワークとCMS+RWDテンプレでレスポンシブWebデザインサイトを構築しよう
 
JavaScriptと共に歩いて行く決意をした君へ
JavaScriptと共に歩いて行く決意をした君へJavaScriptと共に歩いて行く決意をした君へ
JavaScriptと共に歩いて行く決意をした君へ
 
WordPressとサーバーお金の話
WordPressとサーバーお金の話WordPressとサーバーお金の話
WordPressとサーバーお金の話
 
JavaScriptを使った開発を始めるなら!TypeScriptをはじめよう ~ ステップアップ
JavaScriptを使った開発を始めるなら!TypeScriptをはじめよう ~ ステップアップJavaScriptを使った開発を始めるなら!TypeScriptをはじめよう ~ ステップアップ
JavaScriptを使った開発を始めるなら!TypeScriptをはじめよう ~ ステップアップ
 
WordPress JSON REST API 〜さらばPHP、さらばWordPressテーマ
WordPress JSON REST API 〜さらばPHP、さらばWordPressテーマWordPress JSON REST API 〜さらばPHP、さらばWordPressテーマ
WordPress JSON REST API 〜さらばPHP、さらばWordPressテーマ
 
レスポンシブWebデザイン【基礎編】
レスポンシブWebデザイン【基礎編】レスポンシブWebデザイン【基礎編】
レスポンシブWebデザイン【基礎編】
 
“なめらか”なメトロスタイルアプリを作るために ~WinRT の非同期性を活用したアプリ開発~
“なめらか”なメトロスタイルアプリを作るために ~WinRT の非同期性を活用したアプリ開発~“なめらか”なメトロスタイルアプリを作るために ~WinRT の非同期性を活用したアプリ開発~
“なめらか”なメトロスタイルアプリを作るために ~WinRT の非同期性を活用したアプリ開発~
 

Destacado

Robert A Frink 11 2016 (1)
Robert A Frink  11 2016 (1)Robert A Frink  11 2016 (1)
Robert A Frink 11 2016 (1)
Robert Frink
 
Dijimos que estaba bien
Dijimos que estaba bienDijimos que estaba bien
Dijimos que estaba bien
David Loaiza
 
CV-Name of candidate - English
CV-Name of candidate - EnglishCV-Name of candidate - English
CV-Name of candidate - English
Mai Pham
 
Sencillamente hermosos
Sencillamente hermososSencillamente hermosos
Sencillamente hermosos
SASYANDNANA
 
La visita domiciliaria integral (1)
La visita domiciliaria integral (1)La visita domiciliaria integral (1)
La visita domiciliaria integral (1)
Vale Lopezz
 

Destacado (20)

Robert A Frink 11 2016 (1)
Robert A Frink  11 2016 (1)Robert A Frink  11 2016 (1)
Robert A Frink 11 2016 (1)
 
Підручник Хімія 9 клас Ярошенко О.Г.
Підручник Хімія 9 клас Ярошенко О.Г.Підручник Хімія 9 клас Ярошенко О.Г.
Підручник Хімія 9 клас Ярошенко О.Г.
 
Power point examen
Power point examenPower point examen
Power point examen
 
Dijimos que estaba bien
Dijimos que estaba bienDijimos que estaba bien
Dijimos que estaba bien
 
CV-Name of candidate - English
CV-Name of candidate - EnglishCV-Name of candidate - English
CV-Name of candidate - English
 
Ejerciciostransformada zasignacion
Ejerciciostransformada zasignacionEjerciciostransformada zasignacion
Ejerciciostransformada zasignacion
 
SDP 2
SDP 2SDP 2
SDP 2
 
Sugey
SugeySugey
Sugey
 
Jorge mendoza
Jorge mendozaJorge mendoza
Jorge mendoza
 
Sencillamente hermosos
Sencillamente hermososSencillamente hermosos
Sencillamente hermosos
 
Zidul berlinului
Zidul berlinuluiZidul berlinului
Zidul berlinului
 
Seminario nº16
Seminario nº16Seminario nº16
Seminario nº16
 
Wdrc 2008-2009-information-kit-spanish
Wdrc 2008-2009-information-kit-spanishWdrc 2008-2009-information-kit-spanish
Wdrc 2008-2009-information-kit-spanish
 
Probabilidad y estadística historia de la estadistica
Probabilidad y estadística  historia de la estadisticaProbabilidad y estadística  historia de la estadistica
Probabilidad y estadística historia de la estadistica
 
La visita domiciliaria integral (1)
La visita domiciliaria integral (1)La visita domiciliaria integral (1)
La visita domiciliaria integral (1)
 
The Infobiotics workbench
The Infobiotics workbenchThe Infobiotics workbench
The Infobiotics workbench
 
아드레닌『 W3.ow.to 』 톡 w2015 ♡ 아드레닌판매,아드레닌효능,아드레닌성분,아드레닌종류, 아드레닌치사량,아드레닌팔아요
아드레닌『 W3.ow.to  』 톡 w2015 ♡ 아드레닌판매,아드레닌효능,아드레닌성분,아드레닌종류, 아드레닌치사량,아드레닌팔아요아드레닌『 W3.ow.to  』 톡 w2015 ♡ 아드레닌판매,아드레닌효능,아드레닌성분,아드레닌종류, 아드레닌치사량,아드레닌팔아요
아드레닌『 W3.ow.to 』 톡 w2015 ♡ 아드레닌판매,아드레닌효능,아드레닌성분,아드레닌종류, 아드레닌치사량,아드레닌팔아요
 
Instituciones juridicas
Instituciones juridicasInstituciones juridicas
Instituciones juridicas
 
001 cuerpo humano
001 cuerpo humano001 cuerpo humano
001 cuerpo humano
 
Alineamiento bioinf
Alineamiento bioinfAlineamiento bioinf
Alineamiento bioinf
 

Similar a SWFバージョン4においてのテキスト形式によるコンパイル結果の違い及びJavaScriptでのその描画方法に関する考察

F-site発表資料「Flashユーザーが今覚えておきたいHTML5」
F-site発表資料「Flashユーザーが今覚えておきたいHTML5」F-site発表資料「Flashユーザーが今覚えておきたいHTML5」
F-site発表資料「Flashユーザーが今覚えておきたいHTML5」
Yasunobu Ikeda
 
2014年メディア工房勉強会 第1章「Webの仕組みとHTML5」
2014年メディア工房勉強会 第1章「Webの仕組みとHTML5」2014年メディア工房勉強会 第1章「Webの仕組みとHTML5」
2014年メディア工房勉強会 第1章「Webの仕組みとHTML5」
Takashi Endo
 
Mochrom - スマートフォンビジネスサミット
Mochrom - スマートフォンビジネスサミットMochrom - スマートフォンビジネスサミット
Mochrom - スマートフォンビジネスサミット
Katsuaki Sato
 
HTML5-20100626
HTML5-20100626HTML5-20100626
HTML5-20100626
Taku AMANO
 
Java scriptの進化
Java scriptの進化Java scriptの進化
Java scriptの進化
maruyama097
 

Similar a SWFバージョン4においてのテキスト形式によるコンパイル結果の違い及びJavaScriptでのその描画方法に関する考察 (20)

インタラクティブコンテンツにおけるHTML5とFlash
インタラクティブコンテンツにおけるHTML5とFlashインタラクティブコンテンツにおけるHTML5とFlash
インタラクティブコンテンツにおけるHTML5とFlash
 
F-site発表資料「Flashユーザーが今覚えておきたいHTML5」
F-site発表資料「Flashユーザーが今覚えておきたいHTML5」F-site発表資料「Flashユーザーが今覚えておきたいHTML5」
F-site発表資料「Flashユーザーが今覚えておきたいHTML5」
 
新ジャンルのJavaScript圧縮難読化に挑戦 ~jojofy-js
新ジャンルのJavaScript圧縮難読化に挑戦 ~jojofy-js新ジャンルのJavaScript圧縮難読化に挑戦 ~jojofy-js
新ジャンルのJavaScript圧縮難読化に挑戦 ~jojofy-js
 
【Swift】 それ、enumとstructでやってみましょう!!
【Swift】 それ、enumとstructでやってみましょう!!【Swift】 それ、enumとstructでやってみましょう!!
【Swift】 それ、enumとstructでやってみましょう!!
 
【論文読み会】Signing at Scale: Learning to Co-Articulate Signs for Large-Scale Pho...
【論文読み会】Signing at Scale: Learning to Co-Articulate  Signs for Large-Scale Pho...【論文読み会】Signing at Scale: Learning to Co-Articulate  Signs for Large-Scale Pho...
【論文読み会】Signing at Scale: Learning to Co-Articulate Signs for Large-Scale Pho...
 
2014年メディア工房勉強会 第1章「Webの仕組みとHTML5」
2014年メディア工房勉強会 第1章「Webの仕組みとHTML5」2014年メディア工房勉強会 第1章「Webの仕組みとHTML5」
2014年メディア工房勉強会 第1章「Webの仕組みとHTML5」
 
Mochrom - スマートフォンビジネスサミット
Mochrom - スマートフォンビジネスサミットMochrom - スマートフォンビジネスサミット
Mochrom - スマートフォンビジネスサミット
 
Node canvas
Node canvasNode canvas
Node canvas
 
HTML5-20100626
HTML5-20100626HTML5-20100626
HTML5-20100626
 
HTML5でできるカメラアプリを実際に体験しよう
HTML5でできるカメラアプリを実際に体験しよう HTML5でできるカメラアプリを実際に体験しよう
HTML5でできるカメラアプリを実際に体験しよう
 
レスポンシブWebデザイン【発展編】
レスポンシブWebデザイン【発展編】レスポンシブWebデザイン【発展編】
レスポンシブWebデザイン【発展編】
 
JavaScript使いならきっととっつきやすいNode-REDについて
JavaScript使いならきっととっつきやすいNode-REDについてJavaScript使いならきっととっつきやすいNode-REDについて
JavaScript使いならきっととっつきやすいNode-REDについて
 
Gamefest Japan 2010
Gamefest Japan 2010Gamefest Japan 2010
Gamefest Japan 2010
 
Firefox OSでSVGをつかってみた
Firefox OSでSVGをつかってみたFirefox OSでSVGをつかってみた
Firefox OSでSVGをつかってみた
 
Heroku meetup#11(lt)
Heroku meetup#11(lt)Heroku meetup#11(lt)
Heroku meetup#11(lt)
 
CEDEC 2013 - FlashによるアセットワークフローのHTML5やネイティブアプリへのうまい持ち込み方
CEDEC 2013 - FlashによるアセットワークフローのHTML5やネイティブアプリへのうまい持ち込み方CEDEC 2013 - FlashによるアセットワークフローのHTML5やネイティブアプリへのうまい持ち込み方
CEDEC 2013 - FlashによるアセットワークフローのHTML5やネイティブアプリへのうまい持ち込み方
 
Java scriptの進化
Java scriptの進化Java scriptの進化
Java scriptの進化
 
クラウド化が進む今だから読み解くHyper-Vアーキテクチャ
クラウド化が進む今だから読み解くHyper-Vアーキテクチャクラウド化が進む今だから読み解くHyper-Vアーキテクチャ
クラウド化が進む今だから読み解くHyper-Vアーキテクチャ
 
Web matrix2とvisual studio
Web matrix2とvisual studioWeb matrix2とvisual studio
Web matrix2とvisual studio
 
Phone gap+javascriptスマホアプリ開発(入門編)
Phone gap+javascriptスマホアプリ開発(入門編)Phone gap+javascriptスマホアプリ開発(入門編)
Phone gap+javascriptスマホアプリ開発(入門編)
 

SWFバージョン4においてのテキスト形式によるコンパイル結果の違い及びJavaScriptでのその描画方法に関する考察

Notas del editor

  1. test test test
  2. テスト テスト テスト