diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 74683de..48d315d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -15,6 +15,17 @@ jobs: - uses: actions/checkout@v4 with: fetch-depth: 0 + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + repository: mainmatter/core-sans-a-fonts + ssh-key: ${{ secrets.SSH_PRIVATE_KEY }} + path: core-sans-a-fonts + - name: Install Fonts + run: | + sudo cp -r core-sans-a-fonts/* /usr/local/share/fonts/ + sudo fc-cache -f -v + fc-list | grep "Core Sans" - uses: actions-rust-lang/setup-rust-toolchain@v1 - name: Install exercise plugin run: cargo install --path helpers/mdbook-exercise-linker diff --git a/book/book.toml b/book/book.toml index 7fb2b6e..a49ae4c 100644 --- a/book/book.toml +++ b/book/book.toml @@ -28,29 +28,40 @@ show-hidden-lines = true [output.pandoc.profile.pdf] # options to pass to Pandoc (see https://pandoc.org/MANUAL.html) output-file = "100-exercises-to-learn-rust.pdf" to = "latex" -highlight-style = "tango" +highlight-style = "./custom.theme" # We use `lualatext` because, right now, it's the only engine # that supports fallback fonts, which we need for emojis. pdf-engine = "lualatex" metadata-file = "metadata.yml" [output.pandoc.profile.pdf.variables] +mainfont = "CoreSansA45.ttf" +mainfontoptions = [ + "BoldFont=CoreSansA65.ttf", + "ItalicFont=CoreSansA45It.ttf", + "BoldItalicFont=CoreSansA65It.ttf", +] +sansfont = "CoreSansA45.ttf" +sansfontoptions = [ + "BoldFont=CoreSansA65.ttf", + "ItalicFont=CoreSansA45It.ttf", + "BoldItalicFont=CoreSansA65It.ttf", +] # You can get these fonts here: https://fonts.google.com/selection?query=noto+color+ -mainfont = "Noto Serif" -sansfont = "Noto Sans" monofont = "Noto Sans Mono" mainfontfallback = ["Noto Color Emoji:mode=harf"] sansfontfallback = ["Noto Color Emoji:mode=harf"] monofontfallback = [ "Noto Color Emoji:mode=harf", ] -linkcolor = "blue" -urlcolor = "blue" +linkcolor = "Links" +urlcolor = "Links" urlstyle = "rm" documentclass = "book" -fontsize = "11pt" +fontsize = "10pt" geometry = "papersize={8in,10in},top=2cm,bottom=2cm,left=2.4cm,right=2.4cm" header-includes = [ + "\\definecolor{Links}{HTML}{6200EE}", # Reduce font size of code blocks "\\DefineVerbatimEnvironment{Highlighting}{Verbatim}{commandchars=\\\\\\{\\},fontsize=\\small}", ] @@ -65,20 +76,33 @@ metadata-file = "metadata.yml" pdf-engine = "lualatex" [output.pandoc.profile.paperback.variables] +mainfont = "CoreSansA45.ttf" +mainfontoptions = [ + "BoldFont=CoreSansA65.ttf", + "ItalicFont=CoreSansA45It.ttf", + "BoldItalicFont=CoreSansA65It.ttf", +] +sansfont = "CoreSansA45.ttf" +sansfontoptions = [ + "BoldFont=CoreSansA65.ttf", + "ItalicFont=CoreSansA45It.ttf", + "BoldItalicFont=CoreSansA65It.ttf", +] # You can get these fonts here: https://fonts.google.com/selection?query=noto+color+ -mainfont = "Noto Serif" -sansfont = "Noto Sans" monofont = "Noto Sans Mono" mainfontfallback = ["Noto Color Emoji:mode=harf"] sansfontfallback = ["Noto Color Emoji:mode=harf"] monofontfallback = [ "Noto Color Emoji:mode=harf", ] +linkcolor = "Links" +urlcolor = "Links" urlstyle = "rm" documentclass = "book" -fontsize = "11pt" +fontsize = "10pt" geometry = "papersize={8in,10in},top=2cm,bottom=2cm,left=2.8cm,right=2.5cm" header-includes = [ + "\\definecolor{Links}{HTML}{6200EE}", # Reduce font size of code blocks "\\DefineVerbatimEnvironment{Highlighting}{Verbatim}{commandchars=\\\\\\{\\},fontsize=\\small}", ] @@ -95,15 +119,25 @@ standalone = true metadata-file = "metadata.yml" [output.pandoc.profile.html.variables] +mainfont = "CoreSansA45.ttf" +mainfontoptions = [ + "BoldFont=CoreSansA65.ttf", + "ItalicFont=CoreSansA45It.ttf", + "BoldItalicFont=CoreSansA65It.ttf", +] +sansfont = "CoreSansA45.ttf" +sansfontoptions = [ + "BoldFont=CoreSansA65.ttf", + "ItalicFont=CoreSansA45It.ttf", + "BoldItalicFont=CoreSansA65It.ttf", +] # You can get these fonts here: https://fonts.google.com/selection?query=noto+color+ -mainfont = "Noto Serif" -sansfont = "Noto Sans" monofont = "Noto Sans Mono" mainfontfallback = ["Noto Color Emoji:mode=harf"] sansfontfallback = ["Noto Color Emoji:mode=harf"] monofontfallback = [ "Noto Color Emoji:mode=harf", ] -linkcolor = "blue" -urlcolor = "blue" +linkcolor = "Links" +urlcolor = "Links" urlstyle = "rm" diff --git a/book/custom.theme b/book/custom.theme new file mode 100644 index 0000000..b839db3 --- /dev/null +++ b/book/custom.theme @@ -0,0 +1,211 @@ +{ + "text-color": "#c9d1d9", + "background-color": "#343942", + "line-number-color": null, + "line-number-background-color": null, + "text-styles": { + "Alert": { + "text-color": "#ff0000", + "background-color": null, + "bold": true, + "italic": false, + "underline": false + }, + "Annotation": { + "text-color": "#8b949e", + "background-color": null, + "bold": true, + "italic": true, + "underline": false + }, + "Attribute": { + "text-color": "#03DAC5", + "background-color": null, + "bold": false, + "italic": false, + "underline": false + }, + "BaseN": { + "text-color": "#a5d6ff", + "background-color": null, + "bold": false, + "italic": false, + "underline": false + }, + "BuiltIn": { + "text-color": "#03DAC5", + "background-color": null, + "bold": false, + "italic": false, + "underline": false + }, + "Char": { + "text-color": "#a5d6ff", + "background-color": null, + "bold": false, + "italic": false, + "underline": false + }, + "Comment": { + "text-color": "#8b949e", + "background-color": null, + "bold": false, + "italic": true, + "underline": false + }, + "CommentVar": { + "text-color": "#8b949e", + "background-color": null, + "bold": true, + "italic": true, + "underline": false + }, + "Constant": { + "text-color": "#79c0ff", + "background-color": null, + "bold": false, + "italic": false, + "underline": false + }, + "ControlFlow": { + "text-color": "#03DAC5", + "background-color": null, + "bold": true, + "italic": false, + "underline": false + }, + "DataType": { + "text-color": "#8b949e", + "background-color": null, + "bold": false, + "italic": false, + "underline": false + }, + "DecVal": { + "text-color": "#79c0ff", + "background-color": null, + "bold": false, + "italic": false, + "underline": false + }, + "Documentation": { + "text-color": "#8b949e", + "background-color": null, + "bold": false, + "italic": true, + "underline": false + }, + "Error": { + "text-color": "#ff0000", + "background-color": null, + "bold": true, + "italic": false, + "underline": false + }, + "Extension": { + "text-color": null, + "background-color": null, + "bold": false, + "italic": false, + "underline": false + }, + "Float": { + "text-color": "#79c0ff", + "background-color": null, + "bold": false, + "italic": false, + "underline": false + }, + "Function": { + "text-color": "#d2a8ff", + "background-color": null, + "bold": false, + "italic": false, + "underline": false + }, + "Import": { + "text-color": "#8b949e", + "background-color": null, + "bold": true, + "italic": false, + "underline": false + }, + "Information": { + "text-color": "#8b949e", + "background-color": null, + "bold": true, + "italic": true, + "underline": false + }, + "Keyword": { + "text-color": "#03DAC5", + "background-color": null, + "bold": true, + "italic": false, + "underline": false + }, + "Operator": { + "text-color": "#03DAC5", + "background-color": null, + "bold": false, + "italic": false, + "underline": false + }, + "Other": { + "text-color": "#007020", + "background-color": null, + "bold": false, + "italic": false, + "underline": false + }, + "Preprocessor": { + "text-color": "#03DAC5", + "background-color": null, + "bold": false, + "italic": false, + "underline": false + }, + "SpecialChar": { + "text-color": "#03DAC5", + "background-color": null, + "bold": false, + "italic": false, + "underline": false + }, + "SpecialString": { + "text-color": "#03DAC5", + "background-color": null, + "bold": false, + "italic": false, + "underline": false + }, + "String": { + "text-color": "#a5d6ff", + "background-color": null, + "bold": false, + "italic": false, + "underline": false + }, + "Variable": { + "text-color": "#a8daff", + "background-color": null, + "bold": false, + "italic": false, + "underline": false + }, + "VerbatimString": { + "text-color": "#a5d6ff", + "background-color": null, + "bold": false, + "italic": false, + "underline": false + }, + "Warning": { + "text-color": "#60a0b0", + "background-color": null, + "bold": true, + "italic": true, + "underline": false + } + } +}