Android 15 থেকে, ভেরিয়েবল ফন্টগুলি আরও ভালো দক্ষতা ও গ্র্যানুলারিটি সহ
রানটাইমে রেন্ডার করা হয়। এই আপডেটের সাথে, ভেন্ডরদের অবশ্যই
fonts.xml-এর পরিবর্তে
font_fallback.xml-এ নতুন ভেরিয়েবল ফন্ট কনফিগারেশন যোগ করতে হবে, কারণ fonts.xml বাতিল করা হচ্ছে।
আরও তথ্যের জন্য পরিবর্তনযোগ্য ফন্ট সংক্রান্ত সহায়তা দেখুন।
Android 11 ও তার আগের যেকোনও ভার্সনে, AOSP-তে (/system/fonts পার্টিশনে) বা ভেন্ডর পার্টিশনে (/product/fonts বা
/system/fonts পার্টিশনে) ডিভাইস-ইনস্টল করা ফন্ট ফাইল আপডেট করতে হলে OEM-এর থেকে সিস্টেম আপডেট প্রয়োজন। এই
প্রয়োজনীয়তা ইমোজি কম্প্যাটিবিলিটির উপর উল্লেখযোগ্য প্রভাব ফেলে। Android 12-এ আপনি ইনস্টল করা ফন্ট ফাইল ম্যানেজ করতে এবং সিস্টেম আপডেট
ছাড়াই ডিভাইস-ইনস্টল করা ফন্ট ফাইল আপডেট করতে FontManager সিস্টেম
পরিষেবা ব্যবহার করতে পারবেন।
Android 12-এ তিনটি প্রসেস ইন্ট্যার্যাকশন ফিচার আছে;
FontManagerService, Font Updater ও Application।
FontManagerService হল সিস্টেম সার্ভারের সেন্ট্রাল ম্যানেজমেন্ট সিস্টেম।
FontManagerService প্রতিটি ব্যবহারকারীর জন্য লেটেস্ট সিস্টেম ফন্ট সেটিংস সেভ করে।
FontUpdater হল একটি প্লাগেবল ফন্ট আপডেটার যা
signature|privileged অনুমতি চেকের মাধ্যমে বিশ্বাসযোগ্য হিসেবে বিবেচিত হয়। বর্তমান সিস্টেম ফন্ট
সেটিংস পেতে, ইনস্টল করতে, সরাতে বা আপডেট করতে FontUpdater
FontManagerService-এর সাথে যোগাযোগ করে। FontUpdater ইন্টার-প্রসেস কমিউনিকেশন (IPC) মেকানিজমের মাধ্যমে নতুন ফন্ট ফাইলের কন্টেন্ট পাস করতে পারে। FontManagerService কন্টেন্টকে
এমন স্টোরেজ লোকেশনে সেভ করে যা সবাই পড়তে পারে, যেমন /data/fonts ফাইল। এই
স্টোরেজ সুরক্ষিত। এটি FontManagerService শুধুমাত্র SELinux নীতি দ্বারা লেখা হতে পারে।
Application ক্লাস লঞ্চ করলে, এটি bindApplication পদ্ধতির আর্গুমেন্ট হিসেবে সিস্টেম ফন্ট সেটিংস পাস করে;
তারপর এটি অ্যাপ প্রসেস দ্বারা ব্যবহারের জন্য ফন্ট সেটিংস
ইনিশিয়ালাইজ করে।
ভেরিয়েবেল ফন্টের জন্য সহায়তা
Android 15 থেকে শুরু করে, ভেরিয়েবল ফন্ট কনফিগারেশন
নিচে উল্লেখ করা ফর্ম্যাট ব্যবহার করে
font_fallback.xml
নির্দিষ্ট করা হয়:
<family lang="und-Ethi" supportedAxes="wght,ital">
<font>NotoSansEthiopic-VF.ttf</font>
</family>
এই ফর্ম্যাটে, একটি পরিবর্তনশীল ফন্টে একটি স্ট্যাটিক ফন্টের সমস্ত অ্যাট্রিবিউট থাকে
অতিরিক্ত supportedAxes অ্যাট্রিবিউট সহ। supportedAxes অ্যাট্রিবিউট হল
কাজ করে এমন অ্যাক্সিস ট্যাগের কমা-সেপারেটেড তালিকা। Android 15-এর
ক্ষেত্রে, শুধুমাত্র wght এবং ital অক্ষ
উল্লেখ করা যেতে পারে।
supportedAxes অ্যাট্রিবিউট উল্লেখ করা না থাকলে, font নোডটি axis
চিলড্রেন সহ উল্লেখ করা ভেরিয়েবল ফন্টের একটি
স্ট্যাটিক ফন্ট হিসেবে কাজ করে।
supportedAxes অ্যাট্রিবিউট উল্লেখ করা থাকলে, সিস্টেম রানটাইমে প্রদত্ত ওজন ও স্টাইল ভ্যালুর জন্য
ডায়নামিকভাবে একটি ফন্ট ইনস্ট্যান্স তৈরি করে।
সিস্টেম-ইনস্টল করা ফন্ট ফাইলের তালিকা পেতে, ডেভেলপাররা android.graphics.fonts.SystemFonts#getAvailableFonts
Java API বা ASystemFontIterator_open
NDK API ব্যবহার করতে পারেন। এই আপডেট কাজ করে এমন
ডেভেলপার API সম্পর্কে তথ্য পেতে, দেখুন
উন্নত OpenType ভেরিয়েবল ফন্ট API
এবং buildVariableFamily।
হরফগুলি কাস্টমাইজ করুন
কিছু OEM তাদের ব্র্যান্ড দেখানোর জন্য AOSP-তে ফন্ট ফাইল ইনস্টল বা পরিবর্তন করে। Android 12 এই কার্যকারিতা সমর্থন করে, তবে ডিভাইসে ইমোজি ফন্ট আপডেট রাখার প্রয়োজনীয়তা যোগ করে। যেসব OEM ইমোজি ফন্ট ফাইল পরিবর্তন বা আপডেট করে না, তাদের এই ফিচার ব্যবহার করার প্রয়োজন নেই।
Google ফন্ট ফাইল আপডেট করে, বিশেষ করে GMS Core-এর মাধ্যমে NotoColorEmoji ফাইল, তাই NotoColorEmoji.ttf ফাইলটি
/system পার্টিশন থেকে পরিবর্তন বা সরিয়ে ফেলবেন না এবং
/frameworks/base/data/fonts/fonts.xml থেকে এটি সরাবেন না।
আপনি যে তিনটি উপায়ে ফন্ট কাস্টমাইজ করতে পারবেন তা মনে রাখবেন:
NotoColorEmoji.ttfফাইলটি OEM-ব্র্যান্ডেড ইমোজি ফন্ট দিয়ে পরিবর্তন করুন।- আপনার স্থানীয় বাজারের প্রয়োজন অনুযায়ী
NotoColorEmoji.ttfফাইল পরিবর্তন করুন। - অন্যান্য ফন্ট ফাইল পরিবর্তন বা মডিফাই করা।
আপনি AOSP-তে ইমোজি ফন্ট পরিবর্তন না করলে, আপনাকে কোনও অ্যাকশন নিতে হবে না। আপনি ইমোজি ফন্ট কাস্টমাইজ করতে চাইলে, নিম্নলিখিত বিভাগে দেওয়া নির্দেশাবলী ব্যবহার করুন।
NotoColorEmoji.ttf-এর পরিবর্তে OEM-ব্র্যান্ডেড ইমোজি ফন্ট ব্যবহার করুন
আপনার OEM-ব্র্যান্ডেড ইমোজি ফন্ট ফাইল দিয়ে NotoColorEmoji.ttf ফাইলটি পাল্টাতে,
ফন্ট ফলব্যাক চেনের ঠিক আগে ইমোজি ফন্টটি রাখুন:
/systemপার্টিশনে আপনার নিজস্ব ফন্ট, যার নামOEMCustomEmoji.ttf, সেটি রাখুন।নিচের কোডের মতো করে
/frameworks/base/data/fonts/fonts.xml(এবং Android 15 ও এর পরবর্তী যেকোনও ভার্সনে/frameworks/base/data/fonts/font-fallback.xml) পরিবর্তন করুন:<family lang="ko"> <font weight="400" style="normal" index="1">NotoSansCJK-Regular.ttc</font> </family> <!-- ADD FOLLOWING LINE --> <family lang="und-Zsye"> <font weight="400" style="normal">OEMCustomEmoji.ttf</font> </family> <!-- END OF MODIFICATION --> <family lang="und-Zsye"> <font weight="400" style="normal">NotoColorEmoji.ttf</font> </family> <family lang="und-Zsym"> <font weight="400" style="normal">NotoSansSymbols-Regular-Subsetted2.ttf</font> </family>
স্থানীয় বাজারের প্রয়োজন অনুযায়ী NotoColorEmoji.ttf পরিবর্তন করা
স্থানীয় বাজারের প্রয়োজন অনুযায়ী কাস্টমাইজ করতে এইসব ধাপ অনুসরণ করুন:
- আলাদা নামে আপনার নিজস্ব
NotoColorEmojiফাইল তৈরি করুন; যেমন, সেটির নামModified\_NotoColorEmoji.ttfদিন। - আসল
NotoColorEmoji.ttfফাইলের আগে এটি রাখুন।
আপনি ২ নম্বর ধাপটি সম্পূর্ণ করার পরে, আসল NotoColorEmoji.ttf-এর পরিবর্তে
Modified\NotoColorEmoji.ttf-এর দ্বারা সমর্থিত পরিবর্তিত গ্লিফ দেখা যাবে।
Google নিম্নলিখিত বিষয়গুলি সাজেস্ট করে:
- এই ফন্টে শুধুমাত্র প্রয়োজনীয় গ্লিফ আছে।
- আসল
NotoColorEmoji.ttfফাইলে অপরিবর্তিত গ্লিফ ডেলিগেট করুন যাতে ভবিষ্যতে ইমোজি রিলিজের সময় করা যেকোনও ডিজাইন ফিক্স আপনার ডিভাইস পায়।
গ্লিফ সরানো: NotoColorEmoji.ttf ফাইল থেকে গ্লিফ সরাতে,
১ ও ২ নম্বর ধাপ অনুসরণ করুন এবং আপনার cmap-এ glyph ID = 0 উল্লেখ করুন।
আঞ্চলিক পতাকা ব্যবহার করুন: টার্গেট গ্লিফ কোনও আঞ্চলিক পতাকা হলে, গ্লিফ আইডিকে
অজানা কান্ট্রি কোড হিসেবে উল্লেখ করুন। (country code = "ZZ" ব্যবহার করুন।)
টোফু গ্লিফ তৈরি করা: আপনি যদি কোনও টোফু গ্লিফ ব্যবহার করতে চান, তাহলে
সেটির আইডি স্পষ্টভাবে উল্লেখ করতে পারেন। আপনি glyphID = 0 উল্লেখ করলে, সংশ্লিষ্ট অ্যাপ এটিকে
“গ্লিফ উপলভ্য নেই” হিসেবে ব্যাখ্যা করে। যেমন, আপনি এই অ্যাট্রিবিউট ব্যবহার করলে, Paint#hasGlyph অ্যাপ false রিটার্ন করে।
অন্যান্য ফন্ট ফাইল পরিবর্তন বা মডিফাই করা
অন্যান্য ফন্ট পরিবর্তন বা মডিফাই করার জন্য, কাস্টমাইজেশন স্থানীয় বাজারের প্রয়োজন অনুযায়ী TTF ফাইল মডিফাই করার মতোই। রানটাইমে AOSP-তে আপডেট করা অপরিচিত ফন্ট ফাইল উপেক্ষা করা হয় এবং আপডেট করা হয় না। Google আপনার ডিভাইসে অপরিচিত ফন্ট উপেক্ষা করে। এর মধ্যে সেইসব ফন্ট ফাইল অন্তর্ভুক্ত আছে যেগুলি AOSP-এর আসল ফন্ট থেকে পরিবর্তন করা হয়েছে।
GMS Core-এ Google ফন্ট আপডেট করলেও, সাধারণ ফন্ট আপডেট মেকানিজম সব OEM-এর জন্য খোলা থাকে। OEM, প্রয়োজনীয় শর্ত, ফন্ট ফাইল সাইন করা, এবং রানটাইম ফন্ট আপডেট করা ধাপগুলি ব্যবহার করে অতিরিক্ত ফন্ট আপডেটার ইনস্টল করতে পারে।
পূর্বশর্ত পূরণ করা
ফন্ট আপডেট করার মেকানিজম fs-verity Linux কার্নেল ফিচার ব্যবহার করে। আপনার ডিভাইস fs-verity মেনে চলে কিনা তা যাচাই করুন এবং আপনার ডিভাইসে সার্টিফিকেট অন্তর্ভুক্ত করুন।
ফন্ট ফাইল সই করা
ফন্ট ফাইল যেহেতু ঝুঁকিপূর্ণ রিসোর্স, তাই বিশ্বস্ত কী দিয়ে সেগুলি যাচাই করতে হবে।
আপডেট করতে হবে এমন সব ফন্ট ফাইল ভালভাবে পর্যালোচনা করুন এবং আপনার ব্যক্তিগত কী দিয়ে
স্বাক্ষর করুন। স্বাক্ষরটি অবশ্যইfs-verity মানানসই হতে হবে।
রানটাইম ফন্ট আপডেট করুন
FontManager সিস্টেম অ্যাপ ফন্ট আপডেট করে। FontManager অ্যাপটি
লেটেস্ট ইনস্টল করা সিস্টেম ফন্ট স্ট্যাটাস এবং সিগনেচার সহ ফন্ট
ফাইল আপডেট করার সুবিধা প্রদান করে। আপডেট অ্যাপ কল করতে, আপনার
অ্যাপের অনুমতি তালিকায়
UPDATE_FONT signature|privileged অনুমতি যোগ করুন,
এবং আপনার ম্যানিফেস্টে।
আপনার অ্যাপের আপডেটার
ফাংশনকে UPDATE_FONT signature|privileged অনুমতি দিন।