<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>jp.ferv.blog &#187; FlashPlayer</title>
	<atom:link href="http://ferv.jp/blog/tag/flashplayer/feed/" rel="self" type="application/rss+xml" />
	<link>http://ferv.jp/blog</link>
	<description>「ActionScriptは素晴らしい。コンパイルする価値がある。」って偉い人が言ってた。</description>
	<lastBuildDate>Sun, 15 Aug 2010 00:42:34 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Player10.0 でも purePDF で日本語PDFを作る</title>
		<link>http://ferv.jp/blog/2010/05/10/player10-0_purepdf_japanese/</link>
		<comments>http://ferv.jp/blog/2010/05/10/player10-0_purepdf_japanese/#comments</comments>
		<pubDate>Mon, 10 May 2010 07:59:11 +0000</pubDate>
		<dc:creator>dsk</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[ActionScript 3.0]]></category>
		<category><![CDATA[ByteArray]]></category>
		<category><![CDATA[FlashPlayer]]></category>
		<category><![CDATA[purePDF]]></category>

		<guid isPermaLink="false">http://ferv.jp/blog/?p=1274</guid>
		<description><![CDATA[purePDF とは
PDF を FlashPlayer 内で作成する為のライブラリです。
Java の iText ライブラリを AS3 移植とのことです。
チャプタ・セクション・パラグラフ・フレーズ・イメージな [...]]]></description>
			<content:encoded><![CDATA[<h2>purePDF とは</h2>
<p>PDF を FlashPlayer 内で作成する為のライブラリです。
Java の iText ライブラリを AS3 移植とのことです。
チャプタ・セクション・パラグラフ・フレーズ・イメージなどの基本要素と、カラム・リスト・テーブル・セルなどのレイアウト要素を用い自由にレイアウトした PDF を作成することができます。
また、 AS の GraphicsAPI のようなベクターグラフィックスやグラデーション塗りにも対応した多機能なライブラリです。</p>
<p>purePDF についての情報は下記リンクをご覧下さい。</p>
<ul>
<li><a href="http://www.sephiroth.it/weblog/archives/2010/02/purepdf_a_complete_actionscript_pdf_l.php">purePDF, a complete actionscript PDF library - sephiroth.it - flash world</a></li>
<li><a href="http://code.google.com/p/purepdf/">purepdf - Project Hosting on Google Code</a></li>
<li><a href="http://www.noridon.net/weblogs/archives/2010/05/purepdfpdf.html">purepdfを使って日本語フォントを指定したpdfを作る - nod::ぶろぐ:RIA::Flex/AIR/Flash</a></li>
</ul>
<h2>問題点</h2>
<p>日本語などの 2 バイト文字が特定の環境下で正常に出力できません。
これはライブラリのバグではなく、 FlashPlayer 10.0 のバグです。
FlashPlayer 10.1 (10/05/10 時点では RC4) だとバグフィックスされているので、バグ対応することなく日本語の使用が可能です。（<a href="http://www.noridon.net/weblogs/">nod</a> さんからTwitter で教えて頂きました。ありがとうございます。）
Windows FlashPlayer 10.0 では日本語が全て文字化けして出力されます。
Macintosh FlashPlayer 10.0 では 2 バイト文字中に 1 バイト文字が入ると同要素内の以降の文字が出力されません。
Linux FlashPlayer 10.0 では何も出力されません。</p>
<h2>原因</h2>
<p>環境によって問題の現象が異なりますが、原因は同じ関数のバグによるものです。
<code>ByteArray.writeMultiByte(hoge, 'unicodeFFFE')</code>が FlashPlayer10.0 で
正常に動作していないことが直接の原因です。</p>
<h2>対処法</h2>
<p>FlashPlayer10.0 で encoding が 'UnicodeBigUnmarked' の場合、文字列を走査し、キャラクタコードを書き込みます。
<a href="http://ferv.jp/blog/2010/05/10/bytearray_unicodefffe_bug/">jp.ferv.blog » Blog Archive » ByteArray に ‘unicodeFFFE’ を書き込む際のバグ</a> に諸環境下でのバグの症状と対応策の詳細を書きましたので、合わせてご覧下さい。</p>
<h2>バグFIX済み purePDF によるプレビュー</h2>
<p>ローマ字・半角カナ・第一水準漢字・第二水準漢字を書き込んだ PDF を FlashPlayer 内で作成します。</p>
<p><a rel="shadowbox;width=465;height=465;" href='http://ferv.jp/blog/wp-content/uploads/2010/05/Japanese.swf'><img src="http://ferv.jp/blog/wp-content/uploads/2010/05/purePDF_jp.gif" alt="purePDF_jp" title="purePDF_jp" width="465" height="150" class="alignnone size-full wp-image-1034" /></a></p>
この SWF から各環境下で作成した PDF です。
<ul>
<li><a href="http://ferv.jp/blog/wp-content/uploads/2010/05/Japanese_WIN10.0.45.2_plug-in.pdf">Windows FlashPlayer 10.0.45.2 plug-in</a></li>
<li><a href="http://ferv.jp/blog/wp-content/uploads/2010/05/Japanese_WIN10.0.45.2_activeX.pdf">Windows FlashPlayer 10.0.45.2 activeX</a></li>
<li><a href="http://ferv.jp/blog/wp-content/uploads/2010/05/Japanese_MAC10.0.45.2.pdf">Macintosh FlashPlayer 10.0.45.2 plug-in</a></li>
<li><a href="http://ferv.jp/blog/wp-content/uploads/2010/05/Japanese_LNX10.0.45.2.pdf">Linux FlashPlayer 10.0.45.2 plug-in</a></li>
</ul>
<h2>対応済み purePDF のソース・swc と Expample 用の as ファイルのダウンロード</h2>
<p><a href="http://ferv.jp/blog/wp-content/uploads/2010/05/purePDF_jp.zip">purePDF_jp.zip</a></p>
<p>purePDF のライセンスは LGPL なので、継承して LGPL ライセンスでの配布となります。</p>
<h2>変更箇所</h2>
<p>バグのある関数をコールしている箇所を、
ByteArrayUtils クラス内のバグ対応用の関数をコールするように変更します。</p>
	<ul class="syntax_hilite_header">		<li class="language">ActionScript</li>		<li class="filename">PdfEncodings.as</li>	<li class="source"><a href="#actionscript-5_plane" rel="shadowbox;">Source</a></li></ul><div class="syntax_hilite_planecode" id="actionscript-5_plane"><pre>//byte.buffer.writeMultiByte( text, ByteArrayUtils.getEncoding( encoding ) );
ByteArrayUtils.writeMultiByte( byte.buffer, text, ByteArrayUtils.getEncoding( encoding ) ); // modified by dsk(http://ferv.jp)</pre></div><div class="syntax_hilite">
<div id="actionscript-5">
<div class="actionscript actionscript" style="font-family:monospace;"><ol start="283"><li class="li1"><div class="de1"><span class="co1">//byte.buffer.writeMultiByte( text, ByteArrayUtils.getEncoding( encoding ) );</span></div></li>
<li class="li2"><div class="de2">ByteArrayUtils.<span class="me1">writeMultiByte</span><span class="br0">&#40;</span> byte.<span class="me1">buffer</span>, <span class="kw3">text</span>, ByteArrayUtils.<span class="me1">getEncoding</span><span class="br0">&#40;</span> encoding <span class="br0">&#41;</span> <span class="br0">&#41;</span>; <span class="co1">// modified by dsk(http://ferv.jp)</span></div></li>
</ol></div>
</div></div><br />
<p>バグ対応用の関数です。
まず <code>Capabilities.version</code> から FlashPlayer のバージョンを判定します。
問題のないバージョンの場合は文字列を走査せず、
そのまま <code>writeMultiByte()</code> で書き込みます。
問題のあるバージョンの場合は文字列を走査しつつキャラクタコードを取得し、
2 バイトに収まるキャラクタコードの場合は <code>writeShort()</code> で書き込み、
収まらない場合は 4 バイトとして <code>writeUnsignedInt()</code> で書き込みます。</p>
	<ul class="syntax_hilite_header">		<li class="language">ActionScript</li>		<li class="filename">ByteArrayUtils.as</li>	<li class="source"><a href="#actionscript-6_plane" rel="shadowbox;">Source</a></li></ul><div class="syntax_hilite_planecode" id="actionscript-6_plane"><pre>import flash.system.Capabilities;</pre></div><div class="syntax_hilite">
<div id="actionscript-6">
<div class="actionscript actionscript" style="font-family:monospace;"><ol start="48"><li class="li1"><div class="de1"><span class="kw3">import</span> flash.<span class="kw3">system</span>.<span class="kw3">Capabilities</span>;</div></li>
</ol></div>
</div></div><br />
	<ul class="syntax_hilite_header">		<li class="language">ActionScript</li>		<li class="filename">ByteArrayUtils.as</li>	<li class="source"><a href="#actionscript-7_plane" rel="shadowbox;">Source</a></li></ul><div class="syntax_hilite_planecode" id="actionscript-7_plane"><pre>/**
 * @author dsk (http://ferv.jp)
 */
private static var _specifiedVersion:Boolean = false;

/**
 * @author dsk (http://ferv.jp)
 */
private static var _isUnder10_1:Boolean;</pre></div><div class="syntax_hilite">
<div id="actionscript-7">
<div class="actionscript actionscript" style="font-family:monospace;"><ol start="57"><li class="li1"><div class="de1"><span class="coMULTI">/**</span></div></li>
<li class="li2"><div class="de2"><span class="coMULTI">&nbsp;* @author dsk (http://ferv.jp)</span></div></li>
<li class="li1"><div class="de1"><span class="coMULTI">&nbsp;*/</span></div></li>
<li class="li2"><div class="de2"><span class="kw3">private</span> <span class="kw3">static</span> <span class="kw2">var</span> _specifiedVersion:<span class="kw3">Boolean</span> = <span class="kw2">false</span>;</div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li2"><div class="de2"><span class="coMULTI">/**</span></div></li>
<li class="li1"><div class="de1"><span class="coMULTI">&nbsp;* @author dsk (http://ferv.jp)</span></div></li>
<li class="li2"><div class="de2"><span class="coMULTI">&nbsp;*/</span></div></li>
<li class="li1"><div class="de1"><span class="kw3">private</span> <span class="kw3">static</span> <span class="kw2">var</span> _isUnder10_1:<span class="kw3">Boolean</span>;</div></li>
</ol></div>
</div></div><br />
	<ul class="syntax_hilite_header">		<li class="language">ActionScript</li>		<li class="filename">ByteArrayUtils.as</li>	<li class="source"><a href="#actionscript-8_plane" rel="shadowbox;">Source</a></li></ul><div class="syntax_hilite_planecode" id="actionscript-8_plane"><pre>/**
 * bug fix : fail to work "buffer.writeMultiByte( value, 'unicodeFFFE' )" at FP10.0;
 * @author dsk (http://ferv.jp)
 */
public static function writeMultiByte( buffer: ByteArray, value: String, charSet: String ):void
{
	if (!_specifiedVersion)
		_specifyVersion();
	
	if (!(_isUnder10_1 && charSet = 'unicodeFFFE'))
		buffer.writeMultiByte( value, charSet );
	else
		_writeUnicodeFFFEByte( buffer, value );
	
	buffer.position = 0;
}

/**
 * emulate writing utf-16 BE
 * bug fix : fail to work "buffer.writeMultiByte( value, 'unicodeFFFE' )" at FP10.0
 * @author dsk (http://ferv.jp)
 */
private static function _writeUnicodeFFFEByte( buffer: ByteArray, value: String ):void
{
	var len:int = value.length;
	var i:int, code:uint;
	for (i = 0; i < len; i ++)
	{
		code = value.charCodeAt(i);
		if (code < 0x10000)
			buffer.writeShort(code);
		else
			buffer.writeUnsignedInt(code);
	}
}

/**
 * specify the Flash Player platform and version
 * @author dsk (http://ferv.jp)
 */
private static function _specifyVersion():void
{
	var info:Array = Capabilities.version.split(' ');
	var versions:Array = info[1].split(',');
	var majorMinor:Number = parseFloat(versions[0] + '.' + versions[1]);
	_isUnder10_1 = (majorMinor < 10.1);
	trace('ByteArrayUtils.specifyVersion. to be implemented :', 'isUnder10_1 =', _isUnder10_1);
	
	_specifiedVersion = true;
}</pre></div><div class="syntax_hilite">
<div id="actionscript-8">
<div class="actionscript actionscript" style="font-family:monospace;"><ol start="112"><li class="li1"><div class="de1"><span class="coMULTI">/**</span></div></li>
<li class="li2"><div class="de2"><span class="coMULTI">&nbsp;* bug fix : fail to work &quot;buffer.writeMultiByte( value, 'unicodeFFFE' )&quot; at FP10.0;</span></div></li>
<li class="li1"><div class="de1"><span class="coMULTI">&nbsp;* @author dsk (http://ferv.jp)</span></div></li>
<li class="li2"><div class="de2"><span class="coMULTI">&nbsp;*/</span></div></li>
<li class="li1"><div class="de1"><span class="kw3">public</span> <span class="kw3">static</span> <span class="kw2">function</span> writeMultiByte<span class="br0">&#40;</span> buffer: ByteArray, value: <span class="kw3">String</span>, charSet: <span class="kw3">String</span> <span class="br0">&#41;</span>:<span class="kw3">void</span></div></li>
<li class="li2"><div class="de2"><span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">!</span>_specifiedVersion<span class="br0">&#41;</span></div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; _specifyVersion<span class="br0">&#40;</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; </div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">!</span><span class="br0">&#40;</span>_isUnder10_1 <span class="sy0">&amp;&amp;</span> charSet = <span class="st0">'unicodeFFFE'</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; buffer.<span class="me1">writeMultiByte</span><span class="br0">&#40;</span> value, charSet <span class="br0">&#41;</span>;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; <span class="kw1">else</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; _writeUnicodeFFFEByte<span class="br0">&#40;</span> buffer, value <span class="br0">&#41;</span>;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; </div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; buffer.<span class="kw3">position</span> = 0;</div></li>
<li class="li2"><div class="de2"><span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li2"><div class="de2"><span class="coMULTI">/**</span></div></li>
<li class="li1"><div class="de1"><span class="coMULTI">&nbsp;* emulate writing utf-16 BE</span></div></li>
<li class="li2"><div class="de2"><span class="coMULTI">&nbsp;* bug fix : fail to work &quot;buffer.writeMultiByte( value, 'unicodeFFFE' )&quot; at FP10.0</span></div></li>
<li class="li1"><div class="de1"><span class="coMULTI">&nbsp;* @author dsk (http://ferv.jp)</span></div></li>
<li class="li2"><div class="de2"><span class="coMULTI">&nbsp;*/</span></div></li>
<li class="li1"><div class="de1"><span class="kw3">private</span> <span class="kw3">static</span> <span class="kw2">function</span> _writeUnicodeFFFEByte<span class="br0">&#40;</span> buffer: ByteArray, value: <span class="kw3">String</span> <span class="br0">&#41;</span>:<span class="kw3">void</span></div></li>
<li class="li2"><div class="de2"><span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="kw2">var</span> len:<span class="kw3">int</span> = value.<span class="kw3">length</span>;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; <span class="kw2">var</span> i:<span class="kw3">int</span>, code:uint;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="kw1">for</span> <span class="br0">&#40;</span>i = 0; i <span class="sy0">&lt;</span> len; i ++<span class="br0">&#41;</span></div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; <span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; code = value.<span class="kw3">charCodeAt</span><span class="br0">&#40;</span>i<span class="br0">&#41;</span>;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>code <span class="sy0">&lt;</span> 0x10000<span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; buffer.<span class="me1">writeShort</span><span class="br0">&#40;</span>code<span class="br0">&#41;</span>;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">else</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; buffer.<span class="me1">writeUnsignedInt</span><span class="br0">&#40;</span>code<span class="br0">&#41;</span>;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; <span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1"><span class="br0">&#125;</span></div></li>
<li class="li2"><div class="de2">&nbsp;</div></li>
<li class="li1"><div class="de1"><span class="coMULTI">/**</span></div></li>
<li class="li2"><div class="de2"><span class="coMULTI">&nbsp;* specify the Flash Player platform and version</span></div></li>
<li class="li1"><div class="de1"><span class="coMULTI">&nbsp;* @author dsk (http://ferv.jp)</span></div></li>
<li class="li2"><div class="de2"><span class="coMULTI">&nbsp;*/</span></div></li>
<li class="li1"><div class="de1"><span class="kw3">private</span> <span class="kw3">static</span> <span class="kw2">function</span> _specifyVersion<span class="br0">&#40;</span><span class="br0">&#41;</span>:<span class="kw3">void</span></div></li>
<li class="li2"><div class="de2"><span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="kw2">var</span> info:<span class="kw3">Array</span> = <span class="kw3">Capabilities</span>.<span class="kw3">version</span>.<span class="kw3">split</span><span class="br0">&#40;</span><span class="st0">' '</span><span class="br0">&#41;</span>;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; <span class="kw2">var</span> versions:<span class="kw3">Array</span> = info<span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span>.<span class="kw3">split</span><span class="br0">&#40;</span><span class="st0">','</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="kw2">var</span> majorMinor:<span class="kw3">Number</span> = <span class="kw3">parseFloat</span><span class="br0">&#40;</span>versions<span class="br0">&#91;</span>0<span class="br0">&#93;</span> + <span class="st0">'.'</span> + versions<span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span><span class="br0">&#41;</span>;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; _isUnder10_1 = <span class="br0">&#40;</span>majorMinor <span class="sy0">&lt;</span> <span class="nu0">10.1</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="kw3">trace</span><span class="br0">&#40;</span><span class="st0">'ByteArrayUtils.specifyVersion. to be implemented :'</span>, <span class="st0">'isUnder10_1 ='</span>, _isUnder10_1<span class="br0">&#41;</span>;</div></li>
<li class="li2"><div class="de2">&nbsp; &nbsp; </div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; _specifiedVersion = <span class="kw2">true</span>;</div></li>
<li class="li2"><div class="de2"><span class="br0">&#125;</span></div></li>
</ol></div>
</div></div><br />
]]></content:encoded>
			<wfw:commentRss>http://ferv.jp/blog/2010/05/10/player10-0_purepdf_japanese/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ByteArray に &#039;unicodeFFFE&#039; を書き込む際のバグ</title>
		<link>http://ferv.jp/blog/2010/05/10/bytearray_unicodefffe_bug/</link>
		<comments>http://ferv.jp/blog/2010/05/10/bytearray_unicodefffe_bug/#comments</comments>
		<pubDate>Sun, 09 May 2010 23:39:44 +0000</pubDate>
		<dc:creator>dsk</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[ActionScript 3.0]]></category>
		<category><![CDATA[ByteArray]]></category>
		<category><![CDATA[FlashPlayer]]></category>
		<category><![CDATA[purePDF]]></category>

		<guid isPermaLink="false">http://ferv.jp/blog/?p=1282</guid>
		<description><![CDATA[10/05/10 追記 10/05/10 現在の最新 version FlashPlayer 10.0.45.2 でのバグで、10.1 RC4 では FIX されています。
ByteArray.writeMultiBy [...]]]></description>
			<content:encoded><![CDATA[<p><strong>10/05/10 追記</strong> 10/05/10 現在の最新 version FlashPlayer 10.0.45.2 でのバグで、10.1 RC4 では FIX されています。</p>
<p><code>ByteArray.writeMultiByte()</code> メソッドには 2 バイト文字の
処理に不具合があります。
utf-16 BE (BigEndian) を書き込んだ際の諸環境で起こるバグの症状の確認の為の
サンプルを wonderfl で書いてみました。
また、バグ対応のコードも合わせて確認します。</p>
<div style="text-align:center;width:465px;"><iframe title="ByteArray に 'unicodeFFFE' を書き込む際のバグ - wonderfl build flash online" scrolling="no" src="http://wonderfl.net/blogparts/5ar3" width="465" height="490" style="border:1px black solid;"></iframe><a href="http://wonderfl.net/c/5ar3" title="ByteArray に 'unicodeFFFE' を書き込む際のバグ - wonderfl build flash online">ByteArray に 'unicodeFFFE' を書き込む際のバグ - wonderfl build flash online</a></div>
<h2>Windows FlashPlayer 10.0.45.2 plug-in/activeX</h2>
<img src="http://ferv.jp/blog/wp-content/uploads/2010/05/UnicodeFFFE_windows_10.0.gif" />
<p>unicodeFFFE を指定したにもかかわらず
shif_jis のキャラクタコードで書き込まれます。</p>
<h2>Macintosh FlashPlayer 10.0.45.2 plug-in</h2>
<img src="http://ferv.jp/blog/wp-content/uploads/2010/05/UnicodeFFFE_macintosh_10.0.gif" />
<p>2 バイト文字のみの間は utf-16 BE のキャラクタコードが正常に書き込まれますが、
1 バイト文字が混在すると以降のキャラクタコードが書き込まれません。</p>
<h2>Linux FlashPlayer 10.0.45.2 plug-in</h2>
<img src="http://ferv.jp/blog/wp-content/uploads/2010/05/UnicodeFFFE_linux_10.0.gif" />
<p>何も書き込まれません。</p>
<h2>バグの対処法の解説</h2>
<p>unicodeFFFE とは、utf-16 BE (BigEndian) なので
<code>String.charCodeAt(index);</code>で一文字ずつですが取得可能です。
utf-16 では 1 文字を 2 バイトもしくは 4 バイトで定義しています。
つまり、文字列を一文字ずつ走査し、
<code>charCodeAt()</code> メソッドでキャラクタコードを取得し、
0x0000 〜 0xFFFF の範囲なら <code>writeShort()</code> メソッドで
2 バイトとして書き込み、
0x00010000 〜 0xFFFFFFFF の範囲なら <code>writeUnsignedInt()</code> メソッドで
4 バイトとして ByteArray に書き込めばよいことになります。<br />
// ただし、日本語の場合は第二水準漢字まで含めても 2 バイト内に収まります。</p>
]]></content:encoded>
			<wfw:commentRss>http://ferv.jp/blog/2010/05/10/bytearray_unicodefffe_bug/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iPhone風のアイコンジェネレータiCone</title>
		<link>http://ferv.jp/blog/2008/11/07/icon/</link>
		<comments>http://ferv.jp/blog/2008/11/07/icon/#comments</comments>
		<pubDate>Thu, 06 Nov 2008 19:58:44 +0000</pubDate>
		<dc:creator>dsk</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[FlashPlayer]]></category>
		<category><![CDATA[iCone]]></category>

		<guid isPermaLink="false">http://flabo.org/?p=317</guid>
		<description><![CDATA[
FlashPlayer10ではFileReferenceクラスが拡張され、ローカルのデータをサーバーを介することなくFlashPlayerに読み込めるようになりました。
試してみようと思いつつ、データをFlashP [...]]]></description>
			<content:encoded><![CDATA[<a href="http://ferv.jp/app/icone/"><img src="http://ferv.jp/blog/wp-content/uploads/2008/11/icone1.png" alt="" title="icone" width="560" height="150" class="alignnone size-full wp-image-321" /></a>
<p>FlashPlayer10ではFileReferenceクラスが拡張され、ローカルのデータをサーバーを介することなくFlashPlayerに読み込めるようになりました。</p>
<p>試してみようと思いつつ、データをFlashPlayerにロードしてローカルにセーブするだけだと面白くないんで、iPhone風のアイコンジェネレータ<a href="http://ferv.jp/app/icone/">iCone</a>を作ってみました。<br />
アイコンは<a href="http://www.keepthewebweird.com/iphone-icon-psd-template/">iPhone Icon Style .psd Kit</a><span class="at"><a href="http://www.keepthewebweird.com/">WEIRD</a></span>のを使ってます。<br />
背景透明の矩形のpngとかgifを"Load"して、アイコン色とか背景色変えて"セーブ"でローカルに保存するって感じで使います。</p>
<p>またひとつFlashの守備範囲が広くなって楽しくなったなーと。ただ、AIRのメリットはひとつ減ったような気がしますけど。</p>]]></content:encoded>
			<wfw:commentRss>http://ferv.jp/blog/2008/11/07/icon/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>flash.text.engine.ElementFormatリサーチ</title>
		<link>http://ferv.jp/blog/2008/10/28/flashplayer10/</link>
		<comments>http://ferv.jp/blog/2008/10/28/flashplayer10/#comments</comments>
		<pubDate>Mon, 27 Oct 2008 18:32:42 +0000</pubDate>
		<dc:creator>dsk</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[ActionScript 3.0]]></category>
		<category><![CDATA[FlashPlayer]]></category>

		<guid isPermaLink="false">http://flabo.org/?p=305</guid>
		<description><![CDATA[要FlashPlayer10
flashplayer10_api.swf
FlashPlayer10のflash.text.engine.*が気になったけど、サンプル見つからなかった。
手始めにElementFor [...]]]></description>
			<content:encoded><![CDATA[<p>要<a href="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash">FlashPlayer10</a></p>
<p><a rel="shadowbox;width=560;height=800;" href="http://ferv.jp/blog/wp-content/uploads/2008/10/flashplayer10_api.swf">flashplayer10_api.swf</a></p>
<p>FlashPlayer10のflash.text.engine.*が気になったけど、サンプル見つからなかった。<br />
手始めにElementFormatがどんな感じか見てみることに。</p>
<p>ごりごり使うには、オーサリングツール側で調整できるようにならないと現実問題厳しい感じ。<br />
FlashCS4に期待。</p>]]></content:encoded>
			<wfw:commentRss>http://ferv.jp/blog/2008/10/28/flashplayer10/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
