'(Devanagari Font) How to ensure all parts of the text are visible in a <select>?

I'm using a Google font Noto Sans to render English text along with Hindi (Devanagari) in a <select>
But some of the Hindi characters seem to be cut off from the top, like in the snippet below:
(The actual text to be rendered is shown below the <select>)

const select = document.querySelector("#sel")
, printOption = () => {
  const index = select.selectedIndex, selectedText = select.options[index].text
  document.querySelector("#text").innerText = selectedText
}

select.addEventListener("change", printOption)
printOption()
body { padding: 15px; font-family: 'Noto Sans'; }
select, div { font-size: 36px; }
select:focus{ outline: none; }

/* The below rules do not seem to work */
select{
  /* padding: 15px; */
  /* height: 70px; */
  /* line-height: 50px; */
}
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Noto+Sans&display=swap" />
<select id="sel">
  <option selected value="1">कोविड 19 केस / Covid 19 Cases</option>
  <option value="2">लिंग अनुपात / Sex Ratio</option>
  <option value="3">वन क्षेत्र / Forest Area</option>
</select>
<br/><br/>
<div id="text"></div>

What could be the fix for the same?
I've tried a few properties (mentioned in the CSS code) which didn't give desired results.



Solution 1:[1]

You have "included" Noto Sans in your page but you're not using the font on the select element! So:

The select element is rendered using Arial (user agent stylesheet). The characters not present in Arial are rendered using Nirmala UI - a fallback font chosen by the browser or OS:

rendered fonts

The line height of the select element will be that of Arial. But each font has its own normal line height and the fallback font seems to require a taller line height in order to display the characters fully so it gets clipped.

The solution is simple: use the Noto Sans font on select element which seems to contain all the characters you want to display:

body {
  font-family: "Noto Sans";
}
select {
  /* using inherit instead of explicit font name */
  font-family: inherit;
  font-size: medium;
}
select:nth-of-type(2) {
  font-size: 1.5em;
}
select:nth-of-type(3) {
  font-size: 2em;
}
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Noto+Sans&display=swap" />

<select>
  <option selected value="1">????? 19 ??? / Covid 19 Cases</option>
  <option value="2">???? ?????? / Sex Ratio</option>
  <option value="3">?? ??????? / Forest Area</option>
</select>
<br>
<select>
  <option selected value="1">????? 19 ??? / Covid 19 Cases</option>
  <option value="2">???? ?????? / Sex Ratio</option>
  <option value="3">?? ??????? / Forest Area</option>
</select>
<br>
<select>
  <option selected value="1">????? 19 ??? / Covid 19 Cases</option>
  <option value="2">???? ?????? / Sex Ratio</option>
  <option value="3">?? ??????? / Forest Area</option>
</select>

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Anurag Srivastava