2008-10-22 15 views
2

비 라틴 문자 (예 : 중국어)가 포함 된 언어를 비롯하여 12 개의 다른 언어로 번역 될 프리젠 테이션을 만들고 있다고 가정 해보십시오. 클라이언트의 브랜딩 스타일 가이드는 특정 언어가 특정 글꼴을 사용할 수 있다고 규정합니다. 내용 자체는 외부화되어야하므로 .fla를 열거 나 그래픽을 다시 저장하지 않고도 텍스트를 바꿀 수 있습니다.Flash/AS3의 런타임 글꼴로드

XML에서 채워진 동적 TextField는 뷰어의 로케일을 수용하기 위해 스왑 된 글꼴로되어 있습니다. 파일 크기에 관계없이 필요한 글꼴 만 동적으로로드하고 적용하는 것이 가장 쉬운 방법은 무엇입니까? 필요하면? 플래시 만 사용하고 Flex는이 아닌 솔루션을 찾고 있습니다.

답변

1

나는 이것에 대해 아무도 몰랐다는 것에 대해 매우 실망합니다. 오. 드디어 글꼴 로딩 과정을 처리하기 위해 약간의 클래스를 작성했던 사람을 발견하고, 부하에의 .swf 파일을 만드는 방법에 대한 지시했다 :

Flash AS3 Loading Fonts

바라건대 다른 people'll이를 찾기 도움이 - 내 문제에 대한 마법의 총알로 밝혀졌다.

+0

링크가 사망했습니다. 다음은 길 찾기 링크입니다. http://web.archive.org/web/20120904160747/http://www.mokisystems.com/blog/flash-as3-loading-fonts/ – chichilatte

0

글쎄, 어떤 언어를 어떻게 로딩해야하는지 알아야합니다. 자동 감지는 상당히 어려울 수 있습니다.

콘텐츠가 어떤 언어인지 알고 있다고 가정하면 Font.registerFont()을 사용하여 런타임에 사용할 글꼴을 등록 할 수 있습니다. 이렇게하면 글꼴이 들어있는 swf를로드하고 등록 할 수 있으며 모든 텍스트 필드에서 사용할 수 있습니다. print ("code sample");

[Embed(src="someFont.ttf", fontFamily="myFont", mimeType="application/x-font")] 
private var fontClass:Class; 

... 

Font.registerFont(fontClass); 

Embed 태그를 지원하려면 flex 컴파일러를 사용해야합니다.

유용한 유틸리티는 Font.hasGlyphs()입니다.이 유틸리티를 사용하면 사용중인 문자가 포함 된 글꼴로 제공되는지 확인할 수 있습니다. 이것은 시스템 글꼴로 돌아가거나 개발자에게 경고를 표시하는 데 사용할 수 있습니다 (일부 문자를 잊어 버린 경우 등). 이 검사를 자동으로 수행하도록 TextField를 서브 클래 싱하는 것은 좋은 생각 일 수 있습니다.

온라인 상태 일 경우 일반적으로 중국어를 포함시키는 것은 대략 두 번 생각해야합니다. 모든 문자를 임베드하면 파일 크기가 늘어납니다 그리고 afaik에는 어쨌든 사용할 수있는 완전한 중국어 글꼴이 많지 않습니다. 위의 기술은 물론 다른 많은 언어에서도 유용합니다.

+0

자동 검색은 운이 좋게도 아닙니다. 알려지지 않은 상황에서 가장 좋은 해결책은 IP 주소를 살펴보고 가능한 지리적 위치를 추측하는 것입니다. ISP가 그 언어와 연결되어있을 때 해당 언어를 가능한 로케일의 드롭 다운 목록에서 기본으로 설정합니다. –

+0

여기에서 말하고있는 것은 여전히 ​​질문에 적용됩니다. 동적 내용으로 런타임에 사용할 폰트 임베드. 어쨌든 23 개 언어를 사용하는 최근 사이트를 위해 일했습니다. 플래시를 사용하는 경우에도 글꼴을 등록하고 라이브러리를 사용하여 포함 할 수 있습니다. 플렉스를 사용하면 훨씬 쉽게 만들 수 있습니다. – Antti

+0

알아요. 알아요. 그러나 단지 플래시 일뿐입니다. 플렉스가 아닙니다. 글꼴을 등록하고 그 상황에서 라이브러리를 사용하여 임베드하는 방법에 대해 어떻게 생각하십니까? –

0

먼저 중국어와 일본어와 같은 아시아 언어로 된 임베디드 글꼴을 사용하지 않을 것으로 기대하지 않도록하십시오. 수십 메가 바이트의 글리프를로드 할 계획이 아니라면 장치 글꼴을 사용하여 전체 중지를 수행 할 수 있습니다. 이와 같이 클래스 글꼴을 사용할 글꼴 - _sans, _serif, _typewriter 또는 해당 현지화 된 글꼴에 대한 가이드 라인을 보유하는 것이 합당합니다. 그러나 글꼴 자체에 대한 지침은 아닙니다.

두 번째로, 과거에는 대부분 사람들이 장치 글꼴을 사용하는 것이 더 나았을 것이라고 항상 설득했습니다. 장치 글꼴을 사용하면 개발 시간을 단축하고 버그를 피할 수 있습니다. 콘텐츠를 더 빨리로드 할 수 있으며 (네트워크를 통한 경우) 거의 모든 경우에 더 빨리 렌더링됩니다. 종종 더 명확하게 읽을 수 있습니다.

고객은 Garamond-Extra-British 또는 기타 제품에 모든 본문 내용을 요구하지만 관련 비용은 알고 있어야합니다. 그들이 빛을 보면, 당신은 심각한 고통을 덜어 줄 것입니다.

+0

불쾌감은 없지만 문제를 피하기위한 권장 사항으로 답을 제시하지는 않았지만 실제로는 그렇지 않았습니다. –

+0

예를 들어 클라이언트가 Intel이라고 가정 해 봅시다. 제 경험상 "Neo Sans"를 사용하는 것만으로는 불가능합니다. Cicso 또는 HP와 동일합니다. 브랜드 스타일 가이드가 이유가 있습니다. 글꼴을 사용하는 프로젝트를 기꺼이하지 않으려면 대신 다른 사람에게 돈을 지불하십시오. –

+0

내 대답이 현실적인 지 여부는 당신이 알기에 충분한 정보를주지 못했습니다. 5 메가 바이트의 중국어 글꼴을 동적으로로드하는 것이 테이블에있는 옵션 인 경우 매우 일반적인 플래시 컨텐츠를 만들지 않습니다. – fenomas

2

이것은 플래시의 번거 로움이지만 완전히 가능합니다. 당신이해야 할 일은 별도의 swf 안에 폰트를 "삽입"하고, 메인 애플리케이션에서이 swf를로드 한 다음 그 폰트에 그 폰트를 등록하는 것입니다. 이렇게하면 글꼴의 런타임로드를 수행 할 수 있습니다. 이 경우 응용 프로그램에서 언어별로 글꼴을 지정하거나 번역을 저장할 파일을 지정해야합니다.이 파일은 완벽하지는 않지만 주 응용 프로그램에 모든 글꼴을 포함하지는 않습니다. 이는 아무 이유없이로드 된 수백 킬로바이트의 글꼴에 해당합니다.

This blog post에는 제대로 작동하기 위해 수행해야 할 사항이 있습니다. 나는이 일을 스스로 해냈다. 그래서 관심이 있다면 나는이 게시물을 나중에 몇 가지 예제로 확장 할 수있다.

+0

몇 가지 예를 들려 드리겠습니다. 나는 그 블로그 게시물을 훑어 보았고, 내가 필요로하는 것처럼 보였다. 그러나 추상적 인 코드 개념에는별로 좋지 않다. 이해하기 전에 나는 정말로 솔리드 한 것을보고 플레이해야한다. –