2012-10-19 46 views
6

Tôi đã thấy rất nhiều câu hỏi liên quan đến việc nhúng phông chữ trong flash và dường như tôi không thể tìm thấy câu trả lời cho vấn đề của mình.Nhúng phông chữ As3

Tôi tải phông chữ từ một phông chữ và đăng ký chúng ở mức cao để chúng có thể được sử dụng trong các tệp con. Vấn đề là swf con cũng có thể nhúng các phông chữ này, nhưng không rõ ràng như vậy, có nghĩa là chúng chỉ được nhúng bởi vì có các trường trong swf con sử dụng các ký tự nhất định của một phông chữ. Điều này có nghĩa là các trường văn bản trong trẻ sử dụng phông chữ nhúng chưa hoàn chỉnh thay vì tập hợp hoàn chỉnh được nhúng được đăng ký trong cấp độ gốc hoặc cấp độ của ông bà. Điều này cũng có nghĩa là các swfs có thể trở thành trẻ em của đứa trẻ này sẽ không nhận được phông chữ hoàn chỉnh.

Câu hỏi của tôi: Có cách nào để cho biết flash khi biên dịch không được nhúng, trong bất kỳ trường hợp nào, phông chữ thành hình ảnh không? Nếu không có một công cụ loại bỏ phông chữ nhúng từ một swf biên dịch?

Dưới đây là một vài điều tôi đã đưa ra suy nghĩ đến/nhận thấy cho đến nay:

  • Dường như nếu mỗi lớp Font được gắn với một ApplicationDomain. (Xác nhận điều này sẽ hữu ích)
  • Sử dụng phông chữ của thiết bị trên các trường văn bản sẽ không khiến bất kỳ phông chữ nào được nhúng. (Tuy nhiên, không phải là một tùy chọn cho tôi vì tôi cần các trường để nhúng phông chữ khi chạy từ một hình thức phụ huynh.)
  • Tôi không thể tìm cách hủy đăng ký phông chữ hoặc đơn giản là yêu cầu các tệp SWF con được tải xuống hữu ích để áp dụng cho các swfs con được tải.
  • Có thể tải trẻ trong một ngữ cảnh khác cho phép định nghĩa cha mẹ của phông chữ ghi đè định nghĩa con. (Hoặc sẽ có hai định nghĩa và nếu như vậy cái nào được ưu tiên?)
  • Tải nội dung từ thư viện của trẻ và thêm chúng vào vùng hiển thị sẽ nhận định nghĩa gốc của phông chữ. (điều này có ý nghĩa vì nội dung được tạo bên ngoài miền của trẻ)
  • Một giải pháp có thể là không thêm bất kỳ ký tự nào vào trường văn bản để biên dịch swf, nhưng đây không thực sự là một tùy chọn vì tôi cần văn bản tĩnh sử dụng bất kỳ phông chữ nào.

Tôi đã bắt đầu định nghĩa vấn đề trong tâm trí của mình có thể không chính xác, vì vậy vui lòng thực hiện một vài bước và cung cấp cho tôi một quan điểm khác về vấn đề này. Cho đến nay có vẻ như câu hỏi tôi đã hỏi ở trên là câu hỏi đúng để trả lời và nếu có một giải pháp cho nó, mọi vấn đề của tôi sẽ biến mất.

Cảm ơn!

+0

Tôi hơi ngớ ngẩn, tôi nghĩ mình đã hiểu câu hỏi của bạn, và đang gõ câu trả lời, sau đó tôi nhận ra rằng tôi không chắc chắn 100% nếu tôi hiểu rõ câu hỏi của bạn. Bạn có thể cung cấp một số mã, nó giúp vẽ một bức tranh rõ ràng hơn cho tôi. – Taurayi

+0

Bạn muốn nhúng từng phông chữ vào swf riêng của nó, sau đó tải swf động khi cần thiết? –

+0

Tôi muốn có bất kỳ số lượng phông chữ nào được tải trước khi bất kỳ hình ảnh nào được tải. Phần đó không phải là một vấn đề. Vấn đề là nhận được các phông chữ trong swfs con để Fonts được tải trước khi các swfs con có thể được sử dụng trong các swfs con và không xung đột với định nghĩa swfs con của một phông chữ. – Jordan

Trả lời

0

Hóa ra đây là một lỗi với phiên bản của tôi của Flash Professional. Tôi đã làm một bản cập nhật và thời gian chạy chia sẻ phông chữ bây giờ có thể. Tôi có lẽ sẽ chỉ các phông chữ được chia sẻ tại một url xấu cho các phông chữ sau đó phông chữ sẽ đến từ miền ứng dụng cha mẹ bởi vì chúng không được biên dịch vào các swfs con. Tôi đang sử dụng Flash Professional CS5.5 11.5.1 ngay bây giờ. Tôi đã sử dụng CS5.5 11.5.0.

http://forums.adobe.com/message/3926344

Nhờ Adobe cho lãng phí thời gian của tôi.

+0

Vâng họ cố định và ghi lại nó, phải không? –

0

Nếu tôi hiểu đúng hơn là bạn muốn xóa/hủy đăng ký tất cả các phông chữ không hoàn chỉnh như phiên bản của phông chữ cụ thể này đã được tải, nhưng được nhúng trong một hình thức khác? Mỗi phông chữ được nhúng sẽ tạo ra một lớp, mỗi swf bạn tải qua lớp Loader được nạp mặc định trong miền ứng dụng riêng của nó, để ngăn chặn các xung đột không gian tên, nhưng bạn có thể buộc trình nạp tải mọi thứ vào miền ứng dụng hiện tại. với tham số «loader context» của phương thức load() của Loader. Vì vậy, theo cách này, bạn có thể cố ép buộc ghi đè các lớp trong cùng một không gian tên với nhau, nhưng bạn không thể kiểm soát lớp nào bị vứt bỏ, nghĩa là bạn không thể kiểm tra phông chữ nào có nhiều glyph hơn. (có lẽ nó chỉ ném lỗi thay vì ghi đè và không chạy ở tất cả, tôi không chắc chắn về điều này).

Mặt khác, bạn nên đặt câu hỏi về cách phông chữ thực sự được nhúng trong tệp swf của trẻ.Tôi biết không có cách nào khác ngoài việc nhúng các font như:

trong * .fla-file như biểu tượng »thư viện«, hoặc trong mã của flashbuilder hoặc flex như thế này: [Embed(source="c:/windows/fonts/verdana.ttf", fontFamily="Verdana", embedAsCFF="false")],

hay này:

@font-face { 
    src: url("../assets/MyriadWebPro.ttf"); 
    fontFamily: myFontFamily; 
    advancedAntiAliasing: true; 
} 

trong tệp mxml. Vì vậy, (đó là những gì tôi đoán) Tên kết quả của lớp được tạo ra phụ thuộc vào thuộc tính «font-family» (hoặc thậm chí nhiều cài đặt hơn) do nhà phát triển đưa ra, có nghĩa là ngay cả khi cùng một phông chữ được nhúng hai lần tên có thể khác nhau gây ra thông qua các thiết lập.

Cũng không có phương pháp Font.unregisterFont(), vì vậy cách quản lý này vẫn là một câu hỏi hay, chỉ trong trường hợp bạn có thể tìm thấy cùng một lớp phông chữ bằng cách nào đó (có lẽ RegExp trở thành người trợ giúp thân thiện).

Tôi nghĩ rằng để giải quyết điều này đúng bạn cần kiểm soát tại thời gian biên dịch, sử dụng xml dựa trên * .xfl dự án tập tin có thể giúp đỡ, nhưng thậm chí hơn tham chiếu Font-File có thể có một tên khác nhau.

Một vấn đề hay, may mắn

+0

Cảm ơn bạn đã phản hồi. Việc nhúng phông chữ cũng xảy ra khi trường văn bản động được đặt thành chống bí danh cho hoạt ảnh hoặc khả năng đọc, điều này thực sự gây phiền toái vì sau đó bạn chỉ nhận được một vài ký tự được nhập trong trường. Cũng văn bản tĩnh tạo ra một định nghĩa của Font được sử dụng để được biên dịch vào swf không có ký tự để có một trường văn bản tĩnh cũng chặn bất cứ điều gì trong swf (hoặc miền ứng dụng) từ việc sử dụng một định nghĩa cha mẹ của cùng một Font.Tôi bắt đầu xem xét giải nén flas sớm hơn hôm nay nhưng cảm ơn vì đã xác nhận đó là một giải pháp khả thi. – Jordan

+0

đã không biết điều này, nhưng tốt để biết – philipp

0

Tôi gặp nhiều vấn đề khi sử dụng phông chữ bằng flash. Nó vẫn là một vấn đề trên html với các trình duyệt khác nhau hiển thị theo nhiều cách khác nhau.

Anyways, for flash, tôi đã xây dựng bộ công cụ này giúp tôi rất nhiều. Kiểm tra cách tùy chỉnh phông chữ của bạn. Nếu bạn thực hiện các bước, tôi chắc chắn vấn đề sẽ được giải quyết.

https://github.com/tbwa/AS3-Toolkit/tree/master/src/com/utils/text

Các vấn đề liên quan