Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can not import font into mjml

mj-font does not work in mjml.

Here is what I am trying to do in index.mjml:

<mjml>

  <mj-head>
      <mj-font name="testFont" href="testFont.ttf"/>
  </mj-head>

  <mj-body>

    <mj-section>
      <mj-column>

        <mj-text font-family="testFont" align="center" font-size="20px">
          Just a text
        </mj-text>

      </mj-column>
    </mj-section>

  </mj-body>

</mjml>

Here is the screenshot of the project directory: enter image description here

Here is what I see in the app: enter image description here

And here is what the font should look like: enter image description here

What am I missing here and how could I make my font work?

Thank you.

like image 241
oobarbazanoo Avatar asked Dec 28 '18 13:12

oobarbazanoo


People also ask

Which tag is used to import fonts in MJML?

Text. Much like with HTML, inserting text in MJML is simple. Just use <mj-text>.


1 Answers

I have found it difficult to use custom fonts using the mj-font tag. If you use a google font api it seems to work correctly.

Example using Google font

<mj-font name="Raleway" href="https://fonts.googleapis.com/css?family=Raleway" />

Taking that into consideration, I have started to using the following and has worked for me: (it goes between <mj-style></mj-style> tags)

@font-face {
    font-family: testFont;
    src: url(https://cdn2.hubspot.net/hubfs/199900/fonts/someFontFile.ttf)
    format('truetype');
} 

I would normally use a .woff file instead of a .ttf file.

Diving deeper into it, if you go to a Google font link such as https://fonts.googleapis.com/css?family=Raleway in your web browser, the contents of the file is this:

/* latin-ext */
@font-face {
  font-family: 'Raleway';
  font-style: normal;
  font-weight: 400;
  src: local('Raleway'), local('Raleway-Regular'), url(https://fonts.gstatic.com/s/raleway/v13/1Ptug8zYS_SKggPNyCMIT4ttDfCmxA.woff2) format('woff2');
  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Raleway';
  font-style: normal;
  font-weight: 400;
  src: local('Raleway'), local('Raleway-Regular'), url(https://fonts.gstatic.com/s/raleway/v13/1Ptug8zYS_SKggPNyC0IT4ttDfA.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

Back to your problem... Since the file that you are loading with the <mj-font> tag is a binary file, I would imagine that mjml doesn't know how to process it. If the file were a .woff font file then it might work. Perhaps they could change this in the near future. After all, it is a very useful tool.

like image 184
Tim Strawbridge Avatar answered Sep 20 '22 08:09

Tim Strawbridge