Пользовательский шрифт с Ionic2

В моем проекте Ionic2 я помещаю свои шрифты (формат ttf) в папку www/build/fonts. Но когда я создаю приложение, шрифты исчезают.

Как я могу это сделать?

Ответы

Ответ 1

Не размещайте шрифты в папке node_modules или build. node_modules папка получает обновление по установке npm или npm, а сборка создается с каждой командой сборки.

Самый лучший способ, который я использую в настоящее время в производственном приложении, - это разместить шрифты внутри папки www/fonts и ссылаться на них внутри вашего /app/themes/app.core. scss, как показано ниже.

@font-face {
    font-family: 'gurbaniakharregular';
    src: url('../../fonts/gurbaniakhar.ttf.eot');
    src: url('../../fonts/gurbaniakhar.ttf.eot?#iefix') format('embedded-opentype'),
         url('../../fonts/gurbaniakhar.ttf.woff2') format('woff2'),
         url('../../fonts/gurbaniakhar.ttf.woff') format('woff'),
         url('../../fonts/gurbaniakhar.ttf.ttf') format('truetype'),
         url('../../fonts/gurbaniakhar.ttf.svg#gurbaniakharregular') format('svg');
    font-weight: normal;
    font-style: normal;
}

Ответ 2

В последнем Ionic2 RC это, похоже, переместилось куда-то под src/assets, возможно, src/assets/fonts. Ссылки на эти файлы в ваших SCSS файлах (в соответствии с @indermohan-singh) относятся к файлу CSS, поэтому он будет как url("../assets/fonts/aleo-italic-webfont.woff2").

Все под src/assets копируется во время сборки, так что это хорошее место для других вещей, которые вам понадобятся, то есть изображения.

Ответ 3

Теперь, когда пыль уселась с помощью Ionic 2/ Angular 2, я надеюсь, что это будет правильный ответ на некоторое время.

Я загрузил "Varela Round" из Google шрифтов и упростил имя файла, но имя шрифта оставалось прежним.

Добавьте шрифт в ./src/assets/fonts. Измените ./src/theme/variables.scss. В разделе "Шрифты" внизу введите свой шрифт:

@import '../assets/fonts/varela-round.ttf';

Затем в вашем обычном CSS:

  font-family: 'Varela Round';

Изменить шрифты, отличные от Google:

  • Это не работает с .otf, и я не уверен в .woff. Возможно, вам понадобится запустить свой шрифт через конвертер.
  • Если вы не уверены в имени шрифта, сначала установите его в своей локальной системе и используйте это имя. Я просто сделал это с шрифтом под названием "Fertigo", который был установлен как "Fertigo Pro".

ИЗМЕНИТЬ

Я не мог заставить это решение работать в iOS, но следующее.

Во-первых, я прошу прощения за то, что у меня был шрифт Varela Round. Я получил эту работу с другим шрифтом, и я использую это в качестве примера здесь.

Добавьте шрифт, как указано выше, но не беспокойтесь, импортируя его в variables.scss. Вместо этого добавьте следующее в app/app.scss:

@font-face {
  font-family: 'Fertigo';
  font-style: normal;
  font-weight: 400;
  src: local('Fertigo Pro'), local('Fertigo-Pro'), url(../assets/fonts/fertigo.ttf) format('woff2');
}

Если format('woff2'); не работает, вам может потребоваться использовать TrueType.

Ответ 4

В Ионном 3.4 поместите свой шрифт в свойство /fonts (путь указан в src/theme/variables.scss).

В src/app/app.scss введите шрифт

@font-face {
    font-family: 'Raleway';
    font-style: normal;
    font-weight: 300;
    src: local('Raleway'), local('Raleway-Regular'), url("../assets/fonts/Raleway-Regular.ttf") format('woff2');
}

Наконец, используйте ваш шрифт в src/theme/variables.scss, переопределяя переменные sass

$font-family-base: 'Raleway';
$font-family-ios-base: 'Raleway';
$font-family-md-base: 'Raleway';
$font-family-wp-base: 'Raleway';

Ответ 5

Шрифты в сборке исчезают каждый раз, когда сборка gulp каждый раз очищает папку сборки. Чтобы этого избежать, вам нужно включить задачи gulp в файл gulpfile.ts.

Измените приведенные ниже изменения в gulpfile.ts.

  • Включите задачу gulp для добавления значка css и шрифтов в вашу сборку

     gulp.task('myCss', function(){
      return gulp.src('path-to-your-font-lib/style.css')
          .pipe(gulp.dest('www/build/css'))
       });
     gulp.task('myFonts', function(){
      return gulp.src('path-to-your-font-lib/fonts/**/*.+(eot|svg|ttf|woff)')
          .pipe(gulp.dest('www/build/fonts'))
       });
    
  • Измените задачу сборки и просмотра gulp следующим образом (добавление шрифта и css на смотреть и строить)

     gulp.task('watch', ['clean'], function(done){
       //existing ionic2 code
     }
     gulp.task('build', ['clean','myCss','myFonts'], function(done){
      //existing ionic2 code
     }
    

Ответ 6

В ионной папке v2.1.0 www создается каждый раз при создании проекта.

вы должны поместить свои шрифты в папку src/assets, как показано ниже.

@font-face {
    font-family: 'montserratregular';
    src: url('../assets/montserrat/montserrat-regular-webfont.eot');
    src: url('../assets/montserrat/montserrat-regular-webfont.eot?#iefix') format('embedded-opentype'),
         url('../assets/montserrat/montserrat-regular-webfont.woff2') format('woff2'),
         url('../assets/montserrat/montserrat-regular-webfont.woff') format('woff'),
         url('../assets/montserrat/montserrat-regular-webfont.ttf') format('truetype'),
         url('../assets/montserrat/montserrat-regular-webfont.svg#montserratregular') format('svg');
    font-weight: normal;
    font-style: normal;
}

Ответ 7

Лучший способ добавить собственные шрифты - использовать gulp. Я добавляю свои пользовательские шрифты в каталог app/theme/fonts и добавляю этот источник в плагин gulp ionic-gulp-fonts-copy в файле gulpfile.js.

// add own src 
gulp.task('fonts', function(){
  return copyFonts({
    src: [
      'node_modules/ionic-angular/fonts/**/*.+(ttf|woff|woff2)',
      'app/theme/fonts/**/*.+(ttf|woff|woff2)'
    ],
    dest: 'www/build/fonts'
  })
});

Первая строка в src по умолчанию, вторая - обычная. После этого вы можете объявить свой шрифт css, например. г.

/* regular */
@font-face {
  font-family: 'Open Sans';
  font-style: normal;
  font-weight: 400;
  src: local('Open Sans'), local('OpenSans'), url(../fonts/opensans/OpenSans-Regular.ttf) format('truetype');
}

Попробуйте!

Ответ 8

В Ионном 3.4, загляните в variables.scss, Ionic team уже заданный путь шрифта $font-path: "../assets/fonts"; Поэтому просто поместите файлы шрифтов в папку assets/fonts, а затем добавьте следующий код в variables.scss

ion-app.ios { font-family: "your-font-name" !important; }

теперь вы должны установить глобальный пользовательский шрифт таким образом

Ответ 9

  • Добавьте свой файл ttf в папку "Свойства" > "Шрифты".
  • Откройте приложение app > app.scss. и вставьте этот код:

    @font-face {
        font-family: 'Raleway';
        font-style: normal;
        font-weight: 300;
        src: local('Raleway Light'), local('Raleway-Light'), url("../assets/fonts/Raleway-Regular.ttf") format('woff2');
        unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF;
    }
    
    /* latin */
    @font-face {
        font-family: 'Raleway';
        font-style: normal;
        font-weight: 300;
        src: local('Raleway Light'), local('Raleway-Light'), url("../assets/fonts/Raleway-Regular.ttf") format('woff2');
        unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000;
    

    }

  • Переименуйте "Raleway-Light" и "Raleway-Regular.ttf" с вашим .ttf файлом.

  • Запуск ионной службы

Ответ 10

ionic 2 при компиляции создает www/build/main.css, если вы проверяете путь шрифта на app.scss обычно есть.. /../assets, но это указывает на никуда во время сборки.

добавить на app.scss путь, например.. /assets/fonts/fontname.ttf, и добавить шрифт на www/assets/fonts/fontname.ttf

он работал идеально для меня.

Ответ 11

Я работаю над ionic3 -

cli packages: (/usr/local/lib/node_modules)

    @ionic/cli-utils  : 1.10.1
    ionic (Ionic CLI) : 3.10.1

global packages:

    Cordova CLI : 7.0.1 

local packages:

    @ionic/app-scripts : 2.1.4
    Cordova Platforms  : android 6.2.3 ios 4.4.0
    Ionic Framework    : ionic-angular 3.6.0

System:

    ios-sim : 5.0.8 
    Node    : v8.4.0
    npm     : 5.4.0 
    OS      : OS X

Я создал новый файл css как style.css и написал там эти строки -

    @font-face {
      font-family: 'sans_medium';
      src: url('../path/to/css/fonts/Regular.otf'); 
    }
   /*if need more font-face*/
    @font-face {
      font-family: 'sans_regular';
      src: url('fonts/SanFranciscoText-Regular.otf');

    }

Связал этот файл css с индексом как -

src/index.html

и добавил эту строку

<link href="css/animate.css" rel="stylesheet">

Это работает для меня...

Ответ 12

В ionic2 просто создайте папку шрифты под src/assets/, затем поместите файл шрифта .ttf и .woff, также включите в него свой sass файл custom-fonts.scss. После обслуживания gulp он автоматически скопирует все ваши файлы в разделе www/assets/fonts/

Ответ 13

В Ionic 4 больше нет app.scss, и стилизация перешла на переменные CSS, а основная конфигурация находится в ./theme/variables.scss.

Чтобы использовать свои собственные шрифты, я помещаю их в папку ./assets/fonts (которую я создал).
В ./theme/variables.scss я добавил:

@font-face {
  font-family: 'Muli';
  font-weight: normal;
  src: url("../assets/fonts/muli-regular.ttf");
}
@font-face {
  font-family: 'Muli';
  font-weight: 300;
  src: url("../assets/fonts/muli-light.ttf");
}

:root {
  --ion-font-family: 'Muli', 'Roboto', 'Helvetica Neue', sans-serif;

Ответ 14

Ionic 2 использует модуль npm с именем ionic- gulp -fonts-copy. Эта задача gulp загрузит шрифты, присутствующие в каталоге node_modules/ionic- angular/fonts. Почему бы вам не попробовать разместить шрифт в этом каталоге и повторить попытку?

(Размещение ваших шрифтов в папке сборки будет бесполезным, так как папка сборки удаляется и создается каждый раз при создании сборки приложения).

Надеюсь, это поможет вам. Спасибо.