অ্যান্ড্রয়েডের ফন্টমেট্রিক্সের শীর্ষ, উত্থান, বেসলাইন, উত্স, নীচে এবং শীর্ষস্থানীয় অর্থ


90

এটি একটি প্রাথমিক প্রশ্নের মতো মনে হচ্ছে, তবে আমি এসও তেমন একটি খুঁজে পাইনি। ডকুমেন্টেশন পড়ার সময় , ধারণাগুলি উপলব্ধি করতে আমার সমস্যা হয়েছিল। আমি বুঝতে কি পার্থক্য মধ্যে চান topএবং ascentএবং bottomএবং descent। এবং বেসলাইনটি ঠিক কোথায়? আমার কাছে এটি চিত্রায়িত করতে সহায়তা করার জন্য কোনও চিত্র রয়েছে?

উত্তর:


287

আসুন প্রথমে ডকুমেন্টেশন কী বলে তা পর্যালোচনা করুন :

  • শীর্ষস্থানীয় - প্রদত্ত পাঠ্যের আকারে ফন্টের দীর্ঘতম গ্লাইফের জন্য বেসলাইনটির সর্বোচ্চ সীমা।
  • অ্যাসেন্ট - একক ব্যবধানযুক্ত পাঠ্যের জন্য বেসলাইনের উপরে প্রস্তাবিত দূরত্ব।
  • উত্থান - একক ব্যবধানযুক্ত পাঠ্যের জন্য বেসলাইনের নীচে প্রস্তাবিত দূরত্ব।
  • নীচে - প্রদত্ত পাঠ্যের আকারে ফন্টের সর্বনিম্ন গ্লাইফের জন্য বেসলাইনটির নীচে সর্বোচ্চ দূরত্ব।
  • শীর্ষস্থানীয় - পাঠ্যের লাইনের মধ্যে যুক্ত করার জন্য প্রস্তাবিত অতিরিক্ত স্থান।

নোট করুন যে বেসলাইনটি প্রথম চারটি থেকে মাপা হয়। এটি কিছুটা অক্ষরের (যেমন জি, ওয়াই, জে, ইত্যাদি) রেখার নীচে যেতে পারে এমন অংশগুলি থাকা সত্ত্বেও এটি লাইনটি পাঠ্যটি যে বেসটি বসে তার ভিত্তি তৈরি করে । আপনি রেখাযুক্ত নোটবুকে যে রেখাগুলি লিখেছেন তা এটি তুলনামূলক।

এই জিনিসগুলি কল্পনা করতে সহায়তা করার জন্য এখানে একটি চিত্র দেওয়া হয়েছে:

ফন্টমেট্রিক্স শীর্ষ, আরোহণ, বেসলাইন, শালীন, নীচে এবং শীর্ষস্থানীয় দেখায়

মনে রাখবেন যে জাভা এবং অ্যান্ড্রয়েডে কোনও ক্যানভাসে অঙ্কন করার সময়, নীচে যাওয়া y এর বৃদ্ধি এবং উপরে যাওয়া y এর হ্রাস । এর অর্থ হ'ল ফন্টমেট্রিক্স ' topএবং ascentনেতিবাচক সংখ্যাগুলি যেহেতু এগুলি বেসলাইন থেকে পরিমাপ করা হয় (যখন উত্পন্ন এবং নীচে ইতিবাচক সংখ্যা)। সুতরাং, আপনার থেকে দূরত্ব পাওয়ার topজন্য bottom( bottom- top) করা দরকার।

নেতৃস্থানীয় এক লাইন নীচে এবং পরবর্তী লাইন উপরের মধ্যে দূরত্ব। উপরের ছবিটিতে যে, এটা লাইন 1 কমলা এবং লাইন 2. হিসাবে @MajorTom এর রক্তবর্ণ মধ্যে স্থান নিচে উল্লিখিত , লেখনী শব্দটি আরো সঠিকভাবে হিসাবে সংজ্ঞায়িত করা হয় "টাইপ ধারাবাহিক লাইনের ভিত্তিরেখা মধ্যে দূরত্ব।" * তবে, অ্যান্ড্রয়েড শব্দটিকে আরও historicalতিহাসিক অর্থে ব্যবহার করেছে বলে মনে হয়। শব্দটি (উচ্চারিত "লেডিংডিং") সেই লিড স্ট্রিপ থেকে এসেছে যা পুরানো টাইপসেটরগুলি টাইপের লাইনের মধ্যে রাখত। এটি মূলত লাইন ব্যবধানকে সামঞ্জস্য করার এক উপায় ছিল। অ্যান্ড্রয়েডে আমি প্রথমে নেতৃত্ব ছাড়া আর কিছুই হতে দেখিনি0এবং আমি সোর্স কোডে এটি কোনও কিছুর জন্য ব্যবহার করতে দেখিনি। (সঠিক আমাকে যদি জানেন যেখানে এটি ক্যালকুলেট কিছু করতে ব্যবহৃত হয়।) আপনি একটি পংক্তি ব্যবধান পরিবর্তন করতে পারেন TextViewসঙ্গে setLineSpacingকোড বা মধ্যে android:lineSpacingExtraএবং android:lineSpacingMultiplierXML- এর। এই পদ্ধতিগুলি তবে অগ্রণী ব্যবহার করে বা সংশোধন করে না।

আরও তথ্যের জন্য এই লিঙ্কগুলি দেখুন:

আরও এক্সপ্লোর করুন

আরও ফন্ট মেট্রিক্স অন্বেষণ করতে, আমি একটি সহজ প্রকল্প তৈরি করেছি।

এখানে চিত্র বর্ণনা লিখুন

বরং এখানে সমস্ত কোড তালিকাভুক্ত। আমি প্রকল্পটি গিটহাবের সাথে যুক্ত করেছি । আপনি হয় প্রকল্পটি ক্লোন করতে পারেন, বা নিম্নলিখিত প্রকল্পগুলিকে একটি নতুন প্রকল্পে অনুলিপি করতে পারেন।

চিঠিগুলি কি কখনও উপরে topবা নীচে যায় bottom?

সাধারণত না, তবে তারা পারত। উপরে এবং নীচে, যেমন আমি তাদের বুঝতে পারি, ফন্টটি সেট করে (অতএব "ফন্টমেট্রিক্স"), সুতরাং একটি ফন্ট নির্মাতা একটি গ্লাইফকে তারা যেটি বলে উপরেরটি (বা নীচের চেয়ে কম) এর চেয়ে বেশি যেতে পারে। এছাড়াও, ইউনিকোডে ডায়াক্রিটিকাল চিহ্নগুলির সংমিশ্রণের সাথে এটি খুব সহজেই ঘটতে পারে। এখানে একটি বরং চরম উদাহরণ ( এখান থেকে নেওয়া)): M̵̳̙͔̟̱͕̓̀̄̉̅ͧ̋͊͌͑́͌ͪ̒̿̀̚a͔̟̝͔ͥ̈́̏ͮͯ̇͆̊̒ͦͦ͘͢͜y̵̴̢͕̝̩̱͈͕̼̣͕̟̌͗̾ͤ̎͌̄ͣͨ͊ͬb̡̯̰̪̜͙̟̝̠͚̜̥̙̤̃ͨ̋̒̒̊ͧͤ͐̓͋̌̾̇̔̈́̀́͡͠e̵ͯͪ̿̿̂̄ͫ̃҉͏͎̣̹̱̜͉̦̞̪̘̠̝̝͍̼̜̖̥̭͟ ̣̞͙͚̝̰̞̹̗̲̣͙͍͍̀̓͊̂̋ͣ̏̑̍̊͌ͩ͐̎̀ͣͣ̚͟ͅh̛͋̏̍̆ͤ͛͐ͨ̌̋ͤ̎̂ͨ̂̓̑̚̕͟͏̻̣͖̖͚͚͓̲̼̪ȁ̔̅̿͐̑͡͏̝͓̮͚̘̦̰͚͎͔͉͚̮̠̕͜ͅṱ̱̼̖̓̂ͭ̏̅͂ͥ͌ͯ͌͠sͪ̓ͪ̄̌̓ͧ͋͐ͬ̅̑҉̨̪̬͎͍̥̬? ̡̮̳͙͓͔̹̘̹͓̘̻̦̣͎̫̐ͤ̐͛́͝ ̴̦̗̬̠͙̭͉̟̺͇̭̰͔͕̯̅̃͋ͪ̈́̉̓̌ͯ̈́͆̋̀ͤ̇̂̿̈́̂͡͡Ṱ̲͎͉̣̳̺̱̜̦̬͕̣͉͇͊̌ͥ͐͒̈́̓́ͥ́́̋͂̅ͬ̆͗ͥ̕͢͡A̴̦̗̬̠͙̭͉̟̺͇̭̰͔͕̯̅̃͋ͪ̈́̉̓̌ͯ̈́͆̋̀ͤ̇̂̿̈́̂͡͡Ṱ̲͎͉̣̳̺̱̜̦̬͕̣͉͇͊̌ͥ͐͒̈́̓́ͥ́́̋͂̅ͬ̆͗ͥ̕͢͡S̍ͧ͗̒͗̂̈ͬ͊̚̚͢͏̗̣̳ͅ!

অ্যান্ড্রয়েডে সেই স্ট্রিংটি প্লাগ করে আমরা এটি পাই:

এখানে চিত্র বর্ণনা লিখুন

ডায়াক্রিটিক্যাল চিহ্নের উপরে যেতে topএবং নিচে bottom। এটি লক্ষণীয় আকর্ষণীয় যে মোট প্রস্থ এবং উচ্চতা যদিও সঠিকভাবে পাঠ্যের সীমানা দ্বারা পরিমাপ করা হয়।

যাইহোক, আপনার প্রোগ্রামিংয়ের সমস্ত ব্যবহারিক উদ্দেশ্যে, আপনি কেবল ধরে নিতে পারেন যে গ্লিফ বর্ণগুলির জন্য সর্বাধিক এবং ন্যূনতম topএবং bottom। এবং সাধারণত তারা ascentএবং এর মধ্যেই থাকবে decent। যে কোনও কারণে যদি আপনার চিঠিগুলি অতিক্রম করে থাকে topবা bottomআপনি ব্যবহার করতে পারেন তা নিশ্চিতভাবে জানতে হবে TextPaint.getTextBounds


সুন্দর! আপনি কি জানেন কোন এককগুলিতে আরোহী, উত্থান ইত্যাদি পরিমাপ করা হয়? তারা পিক্সেল হয়? এগুলি ভাসমান মান তবে তারা কীভাবে পর্দার সাথে মিলবে তা নিশ্চিত নয়। এটি পিক্সেল কিনা এবং কয়েক ইউনিটের কিছুটা পার্থক্য আছে কি না তা দেখতে তাদের ফটোশপটিতে চেক করে নেওয়া হয়েছে; পিক্সেল ছোট হচ্ছে।
বিক্রম গুপ্ত

@ বিক্রমগুপ্ত ইউনিটগুলি পিক্সেল হয়। আমি নিশ্চিত না যে আপনার ফটোশপের চিত্র চেকের সাথে পার্থক্য কী হয়েছিল।
সুরগাচ

দরকারী ব্যাখ্যা এবং অ্যাপ্লিকেশন জন্য ধন্যবাদ। কিন্তু, আপনি আরও ব্যাখ্যা করতে পারেন, ঠিক কি Top? Topলাইনটি স্পর্শ করার মতো দীর্ঘ কোনও চিঠি থাকবে ? উদাহরণস্বরূপ, "এম", "এল" মনে হচ্ছে এটি সবচেয়ে দীর্ঘতম অক্ষর। তাদের কোনটিই স্পর্শ করছে না Top
চেওক ইয়ান চেং

@ চেওকান চেইং, আমার উত্তরের শেষে আপডেটটি দেখুন।
সুরগাচ

@ সুরাগ এই তথ্যের জন্য ধন্যবাদ আমি আরও বুঝতে আপনার অ্যাপ্লিকেশন ব্যবহার করি। আমি আশা করি "অ্যাসেন্ট" লাইনটি আপনার স্ক্রিনশটের মতো ঠিক ফন্টের শীর্ষটিকে স্পর্শ করবে। তবে সর্বশেষতম i.imgur.com/aRxgjvu.png থেকে এটি লম্বা চরিত্রটি "এম" স্পর্শ করছে না। আপনি কেন কোন ধারণা আছে?
চেওক ইয়ান চেং

5

শীর্ষস্থান টাইপোগ্রাফির লাইনের মধ্যে স্থান নয়। স্পষ্টতই এটি এমন কিছু যা অ্যান্ড্রয়েড কোড আমলে নেয় না। আমরা নিজেরাই এ নিয়ে লড়াই করে যাচ্ছি। নেতৃত্বের সঠিক সংজ্ঞা ( উইকিপিডিয়া থেকে ):

টাইপোগ্রাফিতে, নেতৃস্থানীয় / ɛlɛdɪŋ / ধারাবাহিক প্রান্তের বেসলাইনগুলির মধ্যবর্তী দূরত্বকে বোঝায়। এই শব্দটি হ্যান্ড-টাইপসেটিংয়ের দিনগুলিতে উদ্ভূত হয়েছিল, যখন সীমার পাতলা স্ট্রাইপগুলি টাইপের লাইনের মধ্যে উল্লম্ব দূরত্ব বাড়ানোর জন্য ফর্মগুলিতে প্রবেশ করা হয়েছিল।

আমি যা বলতে পারি তা থেকে, Android এর কাছে এটি নির্দিষ্ট করার কোনও উপায় নেই way


আরও ভাল নেতৃত্ব বুঝতে আমাকে সহায়তা করার জন্য +1। যতদুর নেতৃস্থানীয় পরিবর্তন যায়, আপনি TextView এর ব্যবহার করতে পারেন setLineSpacingকোডে বা android:lineSpacingExtraএবং android:lineSpacingMultiplierXML- এর।
সুরগাচ

ধন্যবাদ - হ্যাঁ আমাদের ব্যবহার করতে বলা হয়েছিল android:lineSpacingExtraযা লাইনের মধ্যে প্রকৃত জায়গার মধ্যে একটি পরিমাপ রাখে। এটি নেতৃত্ব দিচ্ছে না, তবে মনে হচ্ছে ব্যবধানটি পরিচালনা করার একমাত্র উপায়। এটি একটি সমস্যা কারণ টাইপোগ্রাফিতে এ জাতীয় কোনও পরিমাপ নেই, এবং স্কেচ বা জিপেলিনে (আমরা যে সরঞ্জামগুলি ব্যবহার করি) সেই পরিমাপটি নির্দিষ্ট করার মতো কোনও উপায় নেই। প্লাস এটি অগ্রণী সঙ্গে মেলে না।
মেজর টম

4
টাইপোগ্রাফিক লিডিং যদি বেসলাইনগুলির মধ্যে দূরত্ব হয় তবে মনে হয় এটি গণনা করা সহজ হওয়া উচিত।
সুরগাচ

আমি যা ভেবেছিলাম. প্রোগ্রাম থেকে এটি করার কোনও উপায় আছে কি? অ্যান্ড্রয়েড যে পদ্ধতিগুলি দেয় সেগুলি নিয়ে আমি আশা করছিলাম যে এটি করার উপায় আছে be আমরা যে ডিভসের সাথে কাজ করি তা জেনে নেই বলে মনে হচ্ছে।
মেজরটম

আমি এটি নিয়ে কাজ করার পরে এটি হয়ে গেছে, তবে আমি যদি আবার এটি গ্রহণ করতে যাই তবে আমি এখানে এবং এখানে শুরু করতাম এবং বিভিন্ন পাঠ্য এবং ফন্টের সাথে পরীক্ষা করতাম । এমনকি যদি এটি সরাসরি না হয় তবে আমি বিশ্বাস করতে পারি না যে আপনার প্রয়োজনীয়তা গণনার কোনও উপায় নেই।
সুরগাচ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.