কোনও নির্দিষ্ট অক্ষর এনকোডিং ব্যবহার করার সময় এটি কোনও ফন্টের প্রতীক প্রদর্শিত হয় তা কীভাবে নির্ধারণ করা হয়?


0

আমি কীভাবে স্ক্রিনে টেক্সট পড়ি তার পুরো গল্পটি বোঝার চেষ্টা করছি। জিনিসগুলি সহজ রাখার জন্য আমি একক-বাইট এনকোডিংগুলির সাথে থাকি (কোনও ইউনিকোড নেই)।

আমার ডিস্কে বাইটগুলির ক্রম রয়েছে, প্রতিটি যার মান 0 এবং 255 এর মধ্যে রয়েছে I আমি আমার কম্পিউটার প্রোগ্রামগুলি বলতে পারি যে এই বাইটগুলি প্রদর্শন করতে তাদের কোন অক্ষর এনকোডিং করা উচিত। আমি আইএসও -8859-1 ব্যবহার করতে পারি যেখানে উদাহরণস্বরূপ, 0xA4 মান সহ বাইটটি বিন্দু (¤) এর সাথে কিছু বৃত্ত। অথবা আমি আইএসও -8859-15 এ স্যুইচ করতে পারি, তারপরে 0xA4 মান সহ আমার বাইটটি ইউরো প্রতীক (€) হিসাবে সংজ্ঞায়িত করা হয়েছে।

এটি এখনও বুঝতে সহজ। তবে চরিত্রের এনকোডিং পরিবর্তনের সমান্তরাল, আমি একটি চিহ্নের সঠিক আকৃতি নির্ধারণ করতে হরফও পরিবর্তন করতে পারি। এখন, একটি ফন্ট বলতে সমস্ত অক্ষর এনকোডিংয়ের সাথে কাজ করে। সুতরাং, একটি ফন্টে দুটি চিহ্ন থাকতে হবে: ¤ এবং € €

সুতরাং, আমার স্ক্রিনে একটি পাঠ্য পাওয়ার পদক্ষেপগুলি স্পষ্টতই:

  1. বাইট সিকোয়েন্স সিরিয়ালি পড়ুন
  2. অক্ষর এনকোডিং সারণীতে সন্ধান করতে বর্তমান বাইটের সংখ্যাসূচক মানটি ব্যবহার করুন
  3. পদক্ষেপ 2-তে পাওয়া প্রতীকটির সঠিক আকার পেতে ফন্ট ফাইলটিতে অনুসন্ধান করতে [কিছু] ব্যবহার করুন
  4. ফন্ট ফাইলে সংজ্ঞায়িত মতো চিহ্ন আঁকুন

পদক্ষেপ 3-এ, এই "কিছু" কী যা ফন্টের অক্ষর এনকোডিংয়ের জন্য ব্যবহৃত হয়? হরফ ফাইলগুলি অক্ষর এনকোডিংয়ের উপর নির্ভর করে? সুতরাং, একটি ফন্টে কিছু বিল্ট-ইন "ডাবল সুইচ" প্রক্রিয়া রয়েছে যা (সিউডোকোড) এর মতো কাজ করে

get_symbol(code, encoding) {
  switch code{
    case 0xA4: switch(encoding) {
      case 'ISO-8859-1' : return '¤';
      case 'ISO-8859-15': return '€';
    }
  }
}

?

ফন্ট থেকে প্রকৃত প্রতীকটিতে প্রদত্ত বাইট ক্রম এবং প্রদত্ত একটি চরিত্রের এনকোডিং থেকে কীভাবে পাবেন? সর্বদা সঠিক প্রতীক দিতে কীভাবে এই ম্যাপ করা হয়?

উত্তর:


2

হরফ ফাইলগুলি একটি নির্দিষ্ট এনকোডিং দেখানোর জন্য ডিজাইন করা হয়েছে। প্রদত্ত ফন্ট ব্যবহার করে প্রোগ্রামটি ধরে নিতে হবে যে nপ্রদত্ত এনকোডিংয়ের একটি মানটি সংশ্লিষ্ট গ্লাইফ নম্বরটি রেন্ডার করে প্রদর্শিত হবে n

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

প্রদত্ত উদাহরণ থেকে, ওপি সম্ভবত এক্স উইন্ডো সিস্টেমটি ব্যবহার করছে। একাধিক ফাইল-ফর্ম্যাট ব্যবহৃত হয়, যার সাথে বিভিন্নভাবে অ্যাক্সেস করা যায়। প্রধান বেশী XLFD (পুরনো) এবং fontconfig এর (নতুন)। অন্যান্য সিস্টেমগুলির সাথে (মাইক্রোসফ্ট উইন্ডোজ) অন্যান্য এপিআই ব্যবহার করা হয় ( LOGFONTকাঠামোটি একটি ভাল সূচনার পয়েন্ট)। ওএসএক্স তার নিজস্ব এপিআই ( কোরটেক্সট ) সহ অন্য একটি উদাহরণ ।

অবশ্যই গ্রাফিকাল ইন্টারফেসের জন্য। ফন্টগুলি এর চেয়ে আরও ব্যাপকভাবে প্রযোজ্য। উদাহরণস্বরূপ, লিনাক্স এবং বিএসডি একটি পৃথক কনসোল ফন্ট নির্দিষ্ট করার অনুমতি দেয় - যা এনকোডিং ছাড়াও গ্লাইফগুলির ব্যবহারের ক্ষেত্রে সীমাবদ্ধতায় চলে। এখানে তাদের জন্য কয়েকটি দরকারী লিঙ্ক রয়েছে:


0

পাঠ্য অঙ্কনকারী অ্যাপ্লিকেশনটি এটি ব্যবহার করছে এমন পাঠ্য অঙ্কনকারী এপিআইগুলিতে একটি ফন্ট নির্দিষ্ট করে বা যদি এটি নির্দিষ্ট না করে তবে একটি সিস্টেম ডিফল্ট ফন্ট ব্যবহৃত হয়।

ইউনিকোড-ভিত্তিক পাঠ্য অঙ্কন সিস্টেমগুলিতে প্রায়শই একটি ফন্ট সন্ধানের জন্য একটি ফন্টের বিকল্প অ্যালগরিদম থাকে যা নির্দিষ্ট ফন্টটিতে গ্লিফের অনুরোধ না করা থাকলে একটি নির্দিষ্ট গ্লিফ থাকে। তবে প্রাক-ইউনিকোড সিস্টেমগুলি সাধারণত একটি গালিফ আঁকতে বা "অনুপস্থিত গ্লাইফ" গ্লিফ আঁকতে ব্যর্থ হয়। এমনকি ইউনিকোড-ভিত্তিক সিস্টেমগুলি কখনও কখনও "অনুপস্থিত গ্লাইফ" চিহ্নটি আঁকেন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.