「フォント」タグアーカイブ

Flex sdk 4 でのフォント

以前の記事に述べた Flex4 が大部なる故なかなか読み進められない。

そんなところに一昨日「Flex SDK 4 ではフォントの埋め込み方法が異なる」を発見。 リンクの「ActionScript入門Wiki@rsakane」で試してみる。

フォントには Shy Foundry の SF Planetary Orbiter を選んでみる。 しかし、HDD にインストールしてあるのは多分どこかのアーカーイブ・サイトからダウンロードしたもので、フォント名には空白が含まれている。

package
{
	import flash.display.Sprite;
	import flash.text.TextField;
	import flash.text.TextFormat;
 
	public class Planetary extends Sprite
	{
		 [Embed("SF%20Planetary%20Orbiter.ttf", fontName="SF Planetary Orbiter", embedAsCFF='false')]
		private var font:Class;
 
		public function Planetary()
		{
			var tf:TextField = new TextField();
			tf.embedFonts = true;
			tf.defaultTextFormat = new TextFormat("SF Planetary Orbiter", 32, 0x0000ff);
			tf.autoSize = "left";
			addChild(tf);
 
			tf.text = "LEMON";
		}
	}
}

すると、エラーでコンパイルできない。

Planetary.as(10): エラー: トランスコーディング中の例外 :Unexpected exception encountered while reading font file
Planetary.as(10): col: 4: エラー: フォント'SF Planetary Orbiter' を構築できません
Planetary.as(10): col: 4: エラー: SF%20Planetary%20Orbiter.ttf をトランスコードできません。

%20 で置き換えられている空白の所為だろうか?

そう思ってファイル名をリネーム(空白削除)。
SF%20Planetary%20Orbiter.ttf → SFPlanetaryOrbiter.ttf

上記の AS3 からコンパイルしたものは僅か 14kb でしかないのに、mxml にしてコンパイルすると、ナント 328kb。

この原因は mxml の冒頭ですべてのライブラリを読み込むことにあるらしい。
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns="library://ns.adobe.com/flex/spark" xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" width="250" height="150">
  <s:layout>
	<s:VerticalLayout horizontalAlign="center" paddingTop="20" gap="20" />
  </s:layout>
  <fx:Script>
	<![CDATA[
		[Embed(source='assets/SFPlanetaryOrbiter.ttf',
		fontName='SF Planet Orbiter',
		mimeType='application/x-font')]
		private var font1:Class;
	]]>
  </fx:Script>
  <s:Label fontFamily="SF Planetary Orbiter"
  	text="LEMON" fontSize="32" color="#0000ff" />
</s:Application>

こんな例もありました。 ギリシア語フォントなのですが、SPIONIC_.TTF というフォントがあり、これもアンダースコアで同じくエラーが返されました。

SPIONIC_.TTF → SPIonic.ttf とリネームすれば、コンパイルすることができました。

σημείο πήξεως は日本語の「氷点」に当たる。