আমি ইতিমধ্যে এখানে একটি ভিন্ন উত্তরহীন প্রশ্নের মধ্যে এই সমস্যা ছিল । আমি একই আকারের বিভিন্ন হরফের একই আকারের বিভিন্ন ফন্টের আশা করব, তবে এটি এমনটি বলে মনে হচ্ছে না, তাই আমি এটি ঠিক করার জন্য আমার অ্যাড-হক পদ্ধতি দেখাব।
উচ্চারণগুলি একপাশে রেখে, এবং কেবল সরল অক্ষরগুলিতে ফোকাস করে, বিভিন্ন ফন্টগুলি সমস্ত ভিন্ন অক্ষর প্রদর্শন করার জন্য প্রয়োজনীয় কারণ কিছু ফন্টগুলি অন্যান্য ফন্টে উপস্থিত অক্ষরের পুরো ব্লক বাদ দেয়। অসাধারণ অক্ষরগুলির (যেমন "𝚫") তাদের জন্য কমপক্ষে একটি ফন্ট রয়েছে তা নিশ্চিত করার জন্য, সিম্বুলার মতো একটি ফন্ট ইনস্টল করুন এবং ইউনিকোড-ফন্ট প্যাকেজের রিডমে হরফগুলির তালিকা দেখুন ।
আপনি যদি প্যাকেজ unicode-fonts
এবং বেশ কয়েকটি ভাল ফন্ট ইনস্টল করেন তবে সমস্ত অক্ষরকে সমর্থন করা উচিত তবে কিছুকে ইমাসে ভুল প্রদর্শিত উচ্চতা থাকতে হবে।
মনে করুন যে মোনাকোর ভুল উচ্চতা রয়েছে, তবে প্রতীকটি গাণিতিক চিহ্নগুলির জন্য সঠিক উচ্চতা রয়েছে বলে মনে হয় (যেমন সাবজেক্ট অফ অ্যাকুয়াল টু ⊆; বিভিন্ন অক্ষর ব্যবহার C-x 8 RETবা insert-char
পরীক্ষার জন্য))। আমার ক্ষেত্রে, মোনাকো, নোটো সানস চিহ্ন এবং অ্যাপল সিম্বলগুলি ব্যবহার না করা যথেষ্ট ছিল; আমার জন্য একটি ভাল ফন্ট ছিল দেজাভু সানস মনো।
প্রথমটি হ'ল আপনি unicode-fonts
মোনাকো যুক্ত করে এটি ব্যবহার করতে নিষেধ করতে পারেন unicode-fonts-skip-fonts
; এটি পরবর্তী যে কোনও ফন্ট নির্বাচন করে তার সঠিক উচ্চতা থাকতে পারে। বিকল্পভাবে, আপনি unicode-fonts
কোনও ইউনিকোড ব্লকের জন্য নির্দিষ্ট ফন্ট ব্যবহার করতে বলতে পারেন (যেমন ম্যাথমেটিক্যাল অপারেটর; এখানে সমস্ত ব্লকের একটি তালিকা ) এর এন্ট্রি পরিবর্তন করে unicode-fonts-block-font-mapping
।
দ্বিতীয়টি হ'ল আপনি খুব সহজেই অক্ষরগুলির একটি সুনির্দিষ্ট সেট ব্যবহার করে ম্যানুয়ালি এটি করতে পারেন set-fontset-font
। যদি গাণিতিক চিহ্নগুলির জন্য সিম্বোলা একটি ভাল ফন্ট হয় (এই ক্ষেত্রে ব্যাপ্তিটি 0x2100..0x23ff
), নিম্নলিখিতটি কাজ করা উচিত:
(set-fontset-font t '(#x2100 . #x23ff)
;; this should throw an error if there is no such font
(font-xlfd-name (find-font (font-spec :family "Symbola"))))
অন্যান্য রেঞ্জ আমি নিজেকে সংশোধন করা প্রয়োজন ছিল 2000..206f
, 27c0..27ff
, 2900..2bff
, 1d400..1d7ff
।
অবশেষে, হাত দ্বারা ভুল কনফিগার করা অক্ষরগুলি অনুসন্ধান করার প্রয়োজন নেই। ধরে unicode-fonts
নেওয়া ইনস্টল করা আছে, নিম্নলিখিত ফাংশনটি ভুল উচ্চতা সহ সমস্ত অক্ষরের একটি তালিকা তৈরি করবে:
(defun debug-unicode-heights (&optional block-name)
"Find all characters in a given block that have incorrect heights.
BLOCK-NAME can be anything that
`unicode-fonts-debug-insert-block' accepts, such as `'all-math',
or a string naming a Unicode block."
(interactive "sBlock name:")
(unless block-name (setq block-name 'all-math))
(let ((buffer (generate-new-buffer (format "debug-unicode-heights:%s" block-name)))
expected-height
bad-characters)
(pop-to-buffer buffer)
(with-current-buffer buffer
(unicode-fonts-debug-insert-block block-name)
(goto-char (point-min))
(setq expected-height (line-pixel-height))
;; (message "Expected height %d" expected-height)
(while (< (point) (point-max))
(if (or (= (line-pixel-height) expected-height)
;; Some characters are invalid, they have no name
;; (their name is just their hex code), and their
;; heights do not matter to us.
(looking-at-p "^.[^\"]*\"#"))
(delete-region (line-beginning-position)
(1+ (line-end-position)))
(push (char-after (line-beginning-position)) bad-characters)
(forward-line))))
;; (display-message-or-buffer buffer)
(apply #'string (reverse bad-characters))))
উদাহরণ স্বরূপ:
M-: (debug-unicode-heights 'all-math)
এবং তারপর
M-: (debug-unicode-heights 'all-greek)
সমস্ত খারাপ গাণিতিক চিহ্ন দেখানো হবে। তারপরে তারা কোন ফন্টের সাথে প্রদর্শিত হবে তা পরীক্ষা করে এটি পরিবর্তন করতে পারবেন।
আমার ওএস এক্স ১০.৯.৫ রয়েছে, সুতরাং আমার ফন্টের সেটিংস সম্ভবত আপনার থেকে আলাদা হবে। এটি ইনস্টল করার প্রয়োজন হয় না unicode-fonts
; set-fontset-font
আপনি যখনই দেখতে পান যে ইমাসের ডিফল্ট পছন্দগুলি ভাল কাজ করে না তখন আপনার পছন্দসই ফন্ট পছন্দগুলি পুরোপুরি ম্যানুয়ালি নির্দিষ্ট করা সম্ভব ।
পিএস এর বিকল্প রয়েছে: যখন কোনও ফন্ট ধারাবাহিকভাবে খুব বড় / ছোট হয়, আপনি face-font-rescale-alist
ইমাকগুলি বলতে সর্বদা এই ফন্টের আকারকে একটি ফ্যাক্টরের দ্বারা 0.79 এর গুণক দ্বারা গুণান, যোগ করতে পারেন:
(add-to-list 'face-font-rescale-alist (cons (font-spec :family "STIXGeneral") 0.95) t)
যখন আমি এটি চেষ্টা করেছি, এটি ঠিক কাজ করে নি (আমার বাগের প্রতিবেদনটি এখানে ), তবে এটিও একটি সম্ভাব্য পন্থা।