MatijaL

MatijaL

Adding Inter font to Tailwind but it doesn't work, what am I doing wrong?

Hi,

so, I’m using tailwind dependency to add TailwindCSS and it works just fine, but I have a problem with adding Inter font as I simply can’t make it work.

mix.exs

defp deps do
    [{:tailwind, "~> 0.1", runtime: Mix.env() == :dev}]
end

config.exs

# Configure esbuild (the version is required)
config :esbuild,
  version: "0.14.0",
  default: [
    args:
      ~w(js/app.js --bundle --target=es2017 --outdir=../priv/static/assets --external:/fonts/* --external:/images/*),
    cd: Path.expand("../assets", __DIR__),
    env: %{"NODE_PATH" => Path.expand("../deps", __DIR__)}
  ]

# Configure TailwindCSS
config :tailwind, version: "3.2.4", default: [
  args: ~w(
    --config=tailwind.config.js
    --input=css/app.css
    --output=../priv/static/assets/app.css
  ),
  cd: Path.expand("../assets", __DIR__)
]

dev,exs

watchers: [
  tailwind: {Tailwind, :install_and_run, [:default, ~w(--watch)]}
]

fonts.css

@font-face {
  font-family: 'Inter';
  font-weight: 100 900;
  font-display: swap;
  font-style: normal;
  src: url("/fonts/inter-var.woff2") format("woff2-variations");
}

app.css

/* Import CSS Files */
@import "fonts.css";

/* Import TailwindCSS */
@tailwind base;
@tailwind components;
@tailwind utilities;

tailwind.config.js

const defaultTheme = require('tailwindcss/defaultTheme')

module.exports = {
  content: [
    './js/**/*.js',
    '../lib/*_web/**/*.*ex',
    '../lib/*_web/templates/*.heex'
  ],
  theme: {
    extend: {
      fontFamily: {
        primary: ["'Inter'", ...defaultTheme.fontFamily.serif]
      }
    }
  },
  variants: {},
  plugins: []
};

and my fonts folder which contains inter-var.woff2 is inside assets folder /assets/fonts/inter-var.woff2. What am I doing wrong here? How to set it up properly?

Marked As Solved

derpycoder

derpycoder

Appropriately mark the folders in priv/static/ directory as external assets:

--external:/fonts/* --external:/images/*

Those are called external assets, because they are not directly part of the source, like css and javascript. And hence they are placed inside priv/static folder.

You place your fonts inside: priv/static/fonts folder. See: Docs on Images, Fonts & External Files


config.exs

config :esbuild,
  version: "0.14.41",
  default: [
    args:
      ~w(js/app.js --bundle --target=es2017 --outdir=../priv/static/assets --external:/fonts/* --external:/images/*),
    cd: Path.expand("../assets", __DIR__),
    env: %{"NODE_PATH" => Path.expand("../deps", __DIR__)}
  ]

app.css

@import "fonts.css";

@import "tailwindcss/base";
@import "tailwindcss/components";
@import "tailwindcss/utilities";

/* This file is for your main application CSS */

fonts.css

@font-face {
    font-family: 'Signature';
    font-weight: 100 900;
    font-display: swap;
    font-style: normal;
    src: url("/fonts/signature.woff2") format("woff2-variations");
}

tailwind.config.js

  theme: {
    extend: {
      fontFamily: {
        primary: ["'Signature'", ...defaultTheme.fontFamily.serif]
      },
      colors: {
        brand: "#FD4F00",
      }
    },
  },

home.html.heex

<p class="text-8xl font-primary mt-4 font-semibold leading-10 tracking-tighter text-zinc-900">
      Peace of mind from prototype to production.
</p>



P.S. Don’t forget to use the font in your code. Like font-primary in class list.

Also Liked

derpycoder

derpycoder

Ironically, I forgot how to do this.

And after a ton of Googling, I came across my own answer. :sweat_smile:

Marcus

Marcus

Hello @MatijaL

Your must place inter-var.woff2 under priv/static/fonts/. And in the line primary: ["'Inter'", ... the font name is quotated twice.

Marcus

Marcus

Hmm :thinking: - can you find the @font-face in priv/static/assets/app.css?

Where Next?

Popular in Questions Top

aadeshere1
I have a another noob question about loop. Since elixir is immutable, while loop is not directly possible. total = 10 while total != 0 ...
New
beno
I will often find my self writing things similar to: case some_value do nil -&gt; something() "" -&gt; something() _ -&gt; somethi...
New
albydarned
Hello all! I am typing this post from my new MacBook Pro with the M1 chip. I’m loving it so far, and will probably use it as my daily dr...
New
tduccuong
Hi, is there any work on GUI with Elixir, that is similar to Electron/Javascript? My idea is to bundle Phoenix and BEAM into a single se...
New
JulienCorb
I am trying to implement my new.html.eex file to create new posts on my website. new.html.eex: &lt;h1&gt;Create Post&lt;/h1&gt; &lt;%= ...
New
stefanchrobot
What’s the safe way to decode a JSON string into a struct? I want to avoid calling String.to_atom. Jason.decode can give me a map with st...
New
ycv005
I have followed this StackOverflow post to install the specific version of Erlang. And When I am running mix ecto.setup then getting fol...
New
SoCreat
i’m a new one to elixir which editor can i use vs code? or atom? Thanks! :smiley:
New
nobody
Hi! In PHP: $_SERVER[‘SERVER_ADDR’] - in Elixir? Searched the docs for ip address and the web, no good results. Thanks!
New
PeterCarter
There are pre-rolled solutions for other frameworks that do work. However, Phoenix does not seem to have these. Have people had good expe...
New

Other popular topics Top

New
Darmani72
If I have a post route which an argument: post /my_post_route/:my_param1, MyController.my_post_handler How would get the post params ...
New
albydarned
Hello all! I am typing this post from my new MacBook Pro with the M1 chip. I’m loving it so far, and will probably use it as my daily dr...
New
Patoshizzle
After calling mix ecto.create I get this error: 17:00:32.162 [error] GenServer #PID&lt;0.412.0&gt; terminating ** (Postgrex.Error) FATAL...
New
JeremM34
Hello, how can I check the Phoenix version ? Thanks !
New
aalberti333
As the title describes, I’m trying to run Enum.map() over a list of key/value pairs, where the value is a map. My data looks like this: ...
New
saif
Hello everyone, Long time lurker first time poster here. I’ve recently begun working on Elixir full-time again! :raised_hands: It’s been...
New
boundedvariable
I am going through the kafka architecture. All the features what the kafka is providing are already in Erlang. I would like hear your opi...
New
jaysoifer
Is there a way to rollback a specific migration and only that one (“skipping” all the other ones)? Would mix ecto.rollback -v 200809061...
New
jononomo
For some reason my phoenix channels are working for me in my local dev environment, but as soon as I deploy via Docker, I get a 403 error...
New

Latest on Elixir Forum

Elixir Forum

We're in Beta

About us Mission Statement