国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Fabric.js 使用自定義字體

這篇具有很好參考價(jià)值的文章主要介紹了Fabric.js 使用自定義字體。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

本文簡介

點(diǎn)贊 + 關(guān)注 + 收藏 = 學(xué)會(huì)了


如果你使用 Fabric.js 做編輯類的產(chǎn)品,有可能需要給用戶配置字體。

這次就講講在 Fabric.js 中創(chuàng)建文本時(shí)怎么使用自定義字體、在項(xiàng)目運(yùn)行時(shí)怎么修改字體、以及推薦一個(gè)精簡字體庫的工具


學(xué)習(xí)本文前,你必須有一點(diǎn) Fabric.js 的基礎(chǔ),如果沒了解過 Fabric.js 可以閱讀一下 《Fabric.js 從入門到膨脹》



創(chuàng)建文本時(shí)設(shè)置字體

Fabric.js 中使用自定義字體庫時(shí),需要用到 fontfaceobserver.js 這個(gè)工具,至于為什么稍后會(huì)說到。

在創(chuàng)建文本時(shí)就設(shè)置字體,需要做以下幾步:

  1. CSS 里引入字體。
  2. 使用 Fabric.js 創(chuàng)建畫布。
  3. 等字體加載完成后再設(shè)置文本字體。
  4. 將文本添加到畫布中。

在本例中,我使用 IText 創(chuàng)建文本,在創(chuàng)建時(shí)通過它的 fontFamily 屬性就可以設(shè)置自定義字體。


先看看本例效果

Fabric.js 使用自定義字體

我使用斗魚的字體,聽說是可以免費(fèi)使用,希望沒騙我~

按照前面說到的步驟去實(shí)現(xiàn):

<style>
  /* 引入斗魚字體 */
  /* 我把字體放到本地了,字體路徑你們需要根據(jù)自己的項(xiàng)目去修改 */
  @font-face {
    font-family: douyu;
    src: url('../../fonts/douyu.ttf');
  }
</style>

<!-- 畫布元素 -->
<canvas id="c" width="300" height="300" style="border: 1px solid #ccc"></canvas>

<!-- 引入 fontfaceobserver.js 和 fabric.js -->
<script src="../../script/fontfaceobserver.js"></script>
<script src="../../script/fabric.js"></script>

<script>
	// 創(chuàng)建畫布
	const canvas = new fabric.Canvas('c')
  
  // 監(jiān)聽斗魚字體加載
  const douyuFont = new FontFaceObserver('douyu')
  
  // 等字體加載完成或者失敗后再執(zhí)行設(shè)置字體的
  douyuFont.load()
  	// 加載成功
    .then(() => {
    	// 創(chuàng)建文本
    	const iText = new fabric.IText('雷猴', {
      	fontFamily: 'douyu' // 設(shè)置字體
    	})
      // 將文本添加到畫布中
      canvas.add(iText)
  	})
  	// 加載失敗
  	.catch(() => {
    	console.error('字體加載失敗')
  	})
</script>

因?yàn)樽煮w是一種資源文件,引用資源文件就需要時(shí)間去加載。

創(chuàng)建畫布渲染文本的速度可能會(huì)比加載字體資源快很多,所以需要用到 fontfaceobserver.js 去監(jiān)聽字體加載結(jié)果。

  • fontfaceobserver.js 官網(wǎng)
  • fontfaceobserver.js github地址

fontfaceobserver.js 的詳細(xì)用法可以點(diǎn)擊上面的官網(wǎng)查閱。

簡單的用法如下:

<style>
  @font-face {
    font-family: 自定義字體名;
    src: url('字體包路徑');
  }
</style>

<script>
const font = new FontFaceObserver('自定義字體名')

font.load()
  .then()
  .catch()
</script>

load() 方法的作用是監(jiān)聽字體加載結(jié)果,加載成功就執(zhí)行 then 的代碼,加載失敗就執(zhí)行 catch 代碼。



動(dòng)態(tài)修改字體

如果需要在項(xiàng)目運(yùn)行時(shí)動(dòng)態(tài)修改字體,需要做以下幾步:

  1. 提前加載好要用的字體庫。
  2. 創(chuàng)建畫布。
  3. 等字體加載完成后再設(shè)置文本字體。
  4. 將文本添加到畫布中。
  5. 修改字體前,先獲取要修改的文本元素。
  6. 使用 set 方法設(shè)置文本的 fontFamily 屬性。
  7. 刷新畫布。

本例用到斗魚和阿里的字體,我查過了,說是免費(fèi)使用。

Fabric.js 使用自定義字體

根據(jù)上面提到的幾步動(dòng)手編碼

<style>
  /* 我把字體放到本地了,字體路徑你們需要根據(jù)自己的項(xiàng)目去修改 */
  /* 引入斗魚字體 */
  @font-face {
    font-family: douyu;
    src: url('../../fonts/douyu.ttf');
  }
  /* 引入阿里字體 */
  @font-face {
    font-family: ali;
    src: url('../../fonts/AlibabaPuHuiTi-2-35-Thin.ttf');
  }
</style>

<!-- 設(shè)置字體的按鈕 -->
<button onclick="setFont('douyu')">斗魚</button>
<button onclick="setFont('ali')">阿里</button>

<!-- 畫布元素 -->
<canvas id="c" width="300" height="300" style="border: 1px solid #ccc"></canvas>

<!-- 引入 fontfaceobserver.js 和 fabric.js -->
<script src="../../script/fontfaceobserver.js"></script>
<script src="../../script/fabric.js"></script>

<script>
	// 創(chuàng)建畫布
	const canvas = new fabric.Canvas('c')
  // 創(chuàng)建文本
  const iText = new fabric.IText('雷猴')
  // 將文本添加到畫布中
  canvas.add(iText)
  
  // 設(shè)置字體
  function setFont(font) {
    // 監(jiān)聽當(dāng)前要設(shè)置的字體加載情況
    let fontFamily = new FontFaceObserver(font)

    // 加載完成后執(zhí)行
    fontFamily.load()
    	// 加載成功
      .then(() => {
        let target = canvas.getActiveObject()
        if (target) {
          target.set("fontFamily", font)
          canvas.requestRenderAll()
        }
      })
    	// 加載失敗
      .catch(() => {
        console.error('字體加載失敗')
      })
  }
</script>


精簡字體庫

關(guān)于 Fabric.js 如何使用自定義字體庫的內(nèi)容說完了,但日常工作中我還遇到一個(gè)問題:某些特定地方會(huì)使用一些特殊字體,比如數(shù)字、項(xiàng)目名等地方。

通常字體庫會(huì)包含大量字體,但實(shí)際項(xiàng)目中可能只有幾個(gè)字會(huì)用到特殊字體。

經(jīng)過我長時(shí)間的審問,一位不愿透露姓名的網(wǎng)友終于透露出他用到精簡字體庫的工具

Fabric.js 使用自定義字體

Fabric.js 使用自定義字體

Fontmin 有客戶端,也可以直接使用終端操作。

客戶端也提供了mac和windows兩個(gè)版本,操作起來非常簡單。有需要的工友可以打開鏈接獲取。

  • Fontmin官網(wǎng)
  • Fontmin github地址


代碼倉庫

本文完整代碼可通過下方鏈接獲取。

? Fabric.js 使用自定義字體



推薦閱讀

??《Fabric.js 從入門到_ _ _ _ _ _》

??《Fabric.js 樣式不更新怎么辦?》

??《Fabric.js 自定義控件》

??《Fabric.js 講解官方demo:Stickman》

??《Fabric.js 拖拽頂點(diǎn)修改多邊形形狀》

??《Fabric.js 復(fù)制粘貼元素》


點(diǎn)贊 + 關(guān)注 + 收藏 = 學(xué)會(huì)了
代碼倉庫文章來源地址http://www.zghlxwxcb.cn/news/detail-711423.html

到了這里,關(guān)于Fabric.js 使用自定義字體的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • css自定義字體@font-face的使用方法

    可以設(shè)置多個(gè) src 屬性,以指定不同的字體資源路徑。這樣做的目的是為了增強(qiáng)字體的兼容性,以確保在不同的瀏覽器和設(shè)備上都能正常加載字體。 上面設(shè)置了三個(gè)不同的字體資源路徑,分別是 .eot、.woff、.ttf 格式的字體文件,當(dāng)瀏覽器無法識(shí)別第一個(gè)字體文件時(shí),會(huì)自動(dòng)嘗

    2024年02月17日
    瀏覽(101)
  • 使用 pnpm + Monorepo + rollup 實(shí)現(xiàn)Psd、Sketch 轉(zhuǎn) json開源庫, 該json支持作為fabric.js畫布模板

    最近使用 pnpm + Monorepo + rollup 開源了一個(gè)工具庫 tojson.js tojson.js 是一個(gè)支持解析 Psd、Sketch 轉(zhuǎn) json 的類庫, 該 json 滿足 fabric.js 畫布渲染的數(shù)據(jù)格式. 后期也會(huì)增加 ppt、pdf 格式 為什么要使用 pnpm + Monorepo ? 不止開源了一個(gè)工具庫 tojson.js, 也開源了 sketchtojson, pst-json.js 庫, tojson.j

    2024年01月20日
    瀏覽(23)
  • CKEditor5+vue3使用以及如何添加新工具欄,自定義設(shè)置字體fontFamily

    CKEditor5+vue3使用以及如何添加新工具欄,自定義設(shè)置字體fontFamily

    官網(wǎng)地址:https://ckeditor.com/ckeditor-5/online-builder/ 官網(wǎng)提供了以下幾種模式,一般使用經(jīng)典模式居多,具體差別可訪問官網(wǎng)自己試一下。 基本的使用方法(經(jīng)典模式),先別急著操作,看完再?zèng)Q定使用哪種方法。 代碼 效果如圖 以上基本的工具欄配置比較少,如果基本的滿足你的

    2024年02月10日
    瀏覽(37)
  • Fabric.js 圖案筆刷

    Fabric.js 圖案筆刷

    帶尬猴,我是德育處主任 Fabric.js 有圖案畫筆功能,這個(gè)功能可以簡單理解成“刮刮卡”效果。 如果只是看 Fabric.js 文檔可能還不太明白 圖案畫筆 PatternBrush 是如何使用。 本文將講解如何配置這款畫筆的基礎(chǔ)屬性。 先看看效果 圖案畫筆(筆刷)的用法其實(shí)和普通的畫筆差不

    2024年02月08日
    瀏覽(15)
  • canvas+fabric實(shí)現(xiàn)自定義封面
  • Fabric.js 復(fù)制粘貼元素

    Fabric.js 復(fù)制粘貼元素

    點(diǎn)贊 + 關(guān)注 + 收藏 = 學(xué)會(huì)了 當(dāng)你要復(fù)制一個(gè) fabric 的元素時(shí),你考慮到的是什么?是深拷貝當(dāng)前選中對(duì)象再添加到畫布中? 其實(shí), fabric.js 提供了一個(gè)克隆方法,在 fabric.js 官網(wǎng)的案例里也有這個(gè)demo:Fabric.js demos · Copy and Paste。 這次就講講這個(gè) demo。 動(dòng)手之前,我們先理清思

    2024年02月08日
    瀏覽(24)
  • Fabric.js 樣式不更新怎么辦?

    Fabric.js 樣式不更新怎么辦?

    帶尬猴,我嗨德育處主任 不知道你有沒有遇到過在使用 Fabric.js 時(shí)無意中一些騷操作修改了元素的樣式,但刷新畫布卻沒更新元素樣式? 如果你也遇到同樣的問題的話,可以嘗試使用本文的方法。 我先舉個(gè)例子。 在這個(gè)例子中,頁面運(yùn)行1秒后,我想通過 rect.fill = \\\'red\\\' 的方

    2024年02月07日
    瀏覽(17)
  • Fabric.js 元素選中狀態(tài)的事件與樣式

    Fabric.js 元素選中狀態(tài)的事件與樣式

    帶尬猴! 你是否在使用 Fabric.js 時(shí)希望能在選中元素后自定義元素樣式或選框(控制角和輔助線)的樣式? 如果是的話,可以放心往下讀。 本文將手把腳和你一起過一遍 Fabric.js 在對(duì)象元素選中后常用的樣式設(shè)置。 我將對(duì)象元素選中后的設(shè)置分成3類進(jìn)行講解: 控制角 輔助

    2024年02月11日
    瀏覽(20)
  • HTML5 2d canvas 庫 —— Fabric.js 和 Konva.js

    原生 canvas 的操作主要基于上下文,需要使用者自己從0開始去實(shí)現(xiàn)一些基本功能,比較復(fù)雜。而 canvas 庫文件則封裝好了許多便利的對(duì)象,使得用戶可以在比較高級(jí)的層面上進(jìn)行繪制。 Fabric.js 官網(wǎng):Fabric.js Javascript Canvas Library Konva.js 官網(wǎng):Konva 中文文檔 中文API 優(yōu)點(diǎn): 比較老

    2024年02月12日
    瀏覽(21)
  • 微信小程序自定義字體樣式、字體修改、第三方字體設(shè)置

    微信小程序自定義字體樣式、字體修改、第三方字體設(shè)置

    ?博主介紹: 本人專注于Android/java/數(shù)據(jù)庫/微信小程序技術(shù)領(lǐng)域的開發(fā),以及有好幾年的計(jì)算機(jī)畢業(yè)設(shè)計(jì)方面的實(shí)戰(zhàn)開發(fā)經(jīng)驗(yàn)和技術(shù)積累;尤其是在安卓(Android)的app的開發(fā)和微信小程序的開發(fā),很是熟悉和了解;本人也是多年的Android開發(fā)人員;希望我發(fā)布的此篇文件可以幫

    2024年02月04日
    瀏覽(101)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包