Force Non-Monospace Font into Fixed Width Using CSS

前端 未结 8 1946
心在旅途
心在旅途 2020-11-29 04:08

Is there any way to force a font to be monospaced using CSS?

By this I mean, using a non-monospace font, can you force the browser to render each character at a fixe

8条回答
  •  渐次进展
    2020-11-29 04:22

    Well, you didn't say using only CSS. It is possible to do this with just a little bit of Javascript to wrap each letter in a span. The rest is in CSS...

    window.onload = function() {
      const secondP = document.getElementById('fixed');
      const text = secondP.innerText;
      const newText = text.split('').map(c => {
        const span = `${c}`;
        return span;
      }).join('');
      secondP.innerHTML = newText;
    }
    p {
      position: relative;
      border: 1px solid black;
      border-radius: 1em;
      padding: 1em;
      margin: 3em 1em;
    }
    
    p::after {
      content: attr(name);
      display: block;
      background-color: white;
      color: green;
      padding: 0 0.5em;
      position: absolute;
      top: -0.6em;
      left: 0.5em;
    }
    
    #fixed span {
      display: inline-block;
      width: 1em;
      text-align: center;
    }

    It might not look nice, but with a little Javascript, I can force a variable width font to act like a fixed-width font.

    It might not look nice, but with a little Javascript, I can force a variable width font to act like a fixed-width font.

    In a paragraph with regular text, it looks terrible, but There are instances when this makes sense. Icon fonts and Unicode symbols could both make use of this technique.

    I found this question while trying to find a solution for Unicode symbols that were shifting regular text to the right when they were replaced with other Unicode symbols.

提交回复
热议问题