Commit a1599de3 authored by fisherdaddy's avatar fisherdaddy

feature: 新增手写字体生成器

parent e37980a7
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
"preview": "vite preview" "preview": "vite preview"
}, },
"dependencies": { "dependencies": {
"antd": "^5.21.6",
"html2canvas": "^1.4.1", "html2canvas": "^1.4.1",
"react": "^18.2.0", "react": "^18.2.0",
"react-dom": "^18.2.0", "react-dom": "^18.2.0",
......
...@@ -12,7 +12,7 @@ const UrlEncode = lazy(() => import('./components/UrlEncode')); ...@@ -12,7 +12,7 @@ const UrlEncode = lazy(() => import('./components/UrlEncode'));
const About = lazy(() => import('./pages/About')); const About = lazy(() => import('./pages/About'));
const OpenAITimeline = lazy(() => import('./components/OpenAITimeline')); const OpenAITimeline = lazy(() => import('./components/OpenAITimeline'));
const PricingCharts = lazy(() => import('./components/PricingCharts')); const PricingCharts = lazy(() => import('./components/PricingCharts'));
const HandwriteGen = lazy(() => import('./components/HandwriteGen'));
function App() { function App() {
return ( return (
...@@ -30,6 +30,7 @@ function App() { ...@@ -30,6 +30,7 @@ function App() {
<Route path="/about" element={<About />} /> <Route path="/about" element={<About />} />
<Route path="/openai-timeline" element={<OpenAITimeline />} /> <Route path="/openai-timeline" element={<OpenAITimeline />} />
<Route path="/llm-model-price" element={<PricingCharts />} /> <Route path="/llm-model-price" element={<PricingCharts />} />
<Route path="/handwriting" element={<HandwriteGen />} />
<Route path="*" element={<NotFound />} /> <Route path="*" element={<NotFound />} />
</Routes> </Routes>
</Suspense> </Suspense>
......
This diff is collapsed.
This diff is collapsed.
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
"en": { "en": {
"title": "AI Toolbox", "title": "AI Toolbox",
"description": "AI Toolbox - A collection of AI tools including text cards, JSON formatter, URL decoder, OpenAI product releases summary, and global model price comparisons to help you accomplish various tasks effortlessly.", "description": "AI Toolbox - A collection of AI tools including text cards, JSON formatter, URL decoder, OpenAI product releases summary, and global model price comparisons to help you accomplish various tasks effortlessly.",
"slogan": "Your collection of intelligent assistants, solving various AI needs in one place.", "slogan": "Your intelligent development toolset, a one-stop solution for all AI tool needs.",
"keywords": "AI Toolbox, AI tools, text cards, JSON formatter, URL decoder, OpenAI products, model price comparison, online tools, free tools", "keywords": "AI Toolbox, AI tools, text cards, JSON formatter, URL decoder, OpenAI products, model price comparison, online tools, free tools",
"tools": { "tools": {
"text2image": { "text2image": {
...@@ -42,6 +42,10 @@ ...@@ -42,6 +42,10 @@
"modelPrice": { "modelPrice": {
"title": "Global Large Model Price Comparison", "title": "Global Large Model Price Comparison",
"description": "Arena for comparing prices of various models worldwide" "description": "Arena for comparing prices of various models worldwide"
},
"handwrite": {
"title": "Handwriting Font Generator",
"description": "Generates effects similar to writing on paper"
} }
}, },
"notFound": { "notFound": {
...@@ -68,7 +72,7 @@ ...@@ -68,7 +72,7 @@
"zh": { "zh": {
"title": "AI 工具箱", "title": "AI 工具箱",
"description": "AI工具箱 - 集合了多种 AI 工具,如文字卡片、JSON 格式化、URL 解码器、OpenAI 产品发布汇总、全球各大模型价格对比,帮助您轻松完成各类任务。", "description": "AI工具箱 - 集合了多种 AI 工具,如文字卡片、JSON 格式化、URL 解码器、OpenAI 产品发布汇总、全球各大模型价格对比,帮助您轻松完成各类任务。",
"slogan": "您的智能助手集合,一站式解决各种 AI 需求。", "slogan": "您的智能开发工具集合,一站式解决各种 AI 工具需求。",
"keywords": "AI工具箱,AI 工具,文字卡片,JSON 格式化,URL 解码器,OpenAI 产品,模型价格对比,在线工具,免费工具", "keywords": "AI工具箱,AI 工具,文字卡片,JSON 格式化,URL 解码器,OpenAI 产品,模型价格对比,在线工具,免费工具",
"tools": { "tools": {
"text2image": { "text2image": {
...@@ -108,6 +112,10 @@ ...@@ -108,6 +112,10 @@
"modelPrice": { "modelPrice": {
"title": "全球大模型价格对比", "title": "全球大模型价格对比",
"description": "全球各模型价格对比竞技场" "description": "全球各模型价格对比竞技场"
},
"handwrite": {
"title": "手写字体生成器",
"description": "生成和纸上书写一样的效果"
} }
}, },
"notFound": { "notFound": {
...@@ -134,7 +142,7 @@ ...@@ -134,7 +142,7 @@
"ja": { "ja": {
"title": "AIツールボックス", "title": "AIツールボックス",
"description": "AIツールボックス - テキストカード、JSONフォーマッター、URLデコーダー、OpenAI製品のリリースまとめ、世界のモデル価格比較など、多様なAIツールを集めたサイトです。さまざまなタスクを簡単にこなせます。", "description": "AIツールボックス - テキストカード、JSONフォーマッター、URLデコーダー、OpenAI製品のリリースまとめ、世界のモデル価格比較など、多様なAIツールを集めたサイトです。さまざまなタスクを簡単にこなせます。",
"slogan": "あなたのインテリジェントアシスタントコレクション、様々なAIニーズを一箇所で解決します。", "slogan": "あなたのスマートな開発ツールセット、あらゆるAIツールのニーズをワンストップで解決します。",
"keywords": "AIツールボックス、AIツール、テキストカード、JSONフォーマッター、URLデコーダー、OpenAI製品、モデル価格比較、オンラインツール、無料ツール", "keywords": "AIツールボックス、AIツール、テキストカード、JSONフォーマッター、URLデコーダー、OpenAI製品、モデル価格比較、オンラインツール、無料ツール",
"tools": { "tools": {
"text2image": { "text2image": {
...@@ -174,6 +182,10 @@ ...@@ -174,6 +182,10 @@
"modelPrice": { "modelPrice": {
"title": "世界の大規模モデル価格比較", "title": "世界の大規模モデル価格比較",
"description": "世界各国のモデル価格比較アリーナ" "description": "世界各国のモデル価格比較アリーナ"
},
"handwrite": {
"title": "手書きフォントジェネレーター",
"description": "紙に書くような効果を生成します"
} }
}, },
"notFound": { "notFound": {
...@@ -200,7 +212,7 @@ ...@@ -200,7 +212,7 @@
"ko": { "ko": {
"title": "AI 도구 상자", "title": "AI 도구 상자",
"description": "AI 도구상자 - 텍스트 카드, JSON 포매터, URL 디코더, OpenAI 제품 출시 요약, 글로벌 모델 가격 비교 등 다양한 AI 도구를 모아 다양한 작업을 손쉽게 수행할 수 있도록 도와드립니다.", "description": "AI 도구상자 - 텍스트 카드, JSON 포매터, URL 디코더, OpenAI 제품 출시 요약, 글로벌 모델 가격 비교 등 다양한 AI 도구를 모아 다양한 작업을 손쉽게 수행할 수 있도록 도와드립니다.",
"slogan": "당신의 지능형 어시스턴트 컬렉션, 다양한 AI 요구 사항을 한 곳에서 해결합니다.", "slogan": "당신의 지능형 개발 도구 모음, 모든 AI 도구 요구 사항을 원스톱으로 해결합니다.",
"keywords": "AI 도구상자, AI 도구, 텍스트 카드, JSON 포매터, URL 디코더, OpenAI 제품, 모델 가격 비교, 온라인 도구, 무료 도구", "keywords": "AI 도구상자, AI 도구, 텍스트 카드, JSON 포매터, URL 디코더, OpenAI 제품, 모델 가격 비교, 온라인 도구, 무료 도구",
"tools": { "tools": {
"text2image": { "text2image": {
...@@ -240,6 +252,10 @@ ...@@ -240,6 +252,10 @@
"modelPrice": { "modelPrice": {
"title": "전세계 대형 모델 가격 비교", "title": "전세계 대형 모델 가격 비교",
"description": "전 세계 각 모델 가격 비교 아레나" "description": "전 세계 각 모델 가격 비교 아레나"
},
"handwrite": {
"title": "손글씨 폰트 생성기",
"description": "종이에 쓴 것 같은 효과를 생성합니다"
} }
}, },
"notFound": { "notFound": {
......
...@@ -8,6 +8,7 @@ const tools = [ ...@@ -8,6 +8,7 @@ const tools = [
{ id: 'jsonFormatter', icon: 'fa-jsonformat', path: '/json-formatter' }, { id: 'jsonFormatter', icon: 'fa-jsonformat', path: '/json-formatter' },
{ id: 'urlDecode', icon: 'fa-decode', path: '/url-decode' }, { id: 'urlDecode', icon: 'fa-decode', path: '/url-decode' },
{ id: 'urlEncode', icon: 'fa-encode', path: '/url-encode' }, { id: 'urlEncode', icon: 'fa-encode', path: '/url-encode' },
{ id: 'handwrite', icon: 'fa-handwrite', path: '/handwriting' },
{ id: 'openAITimeline', icon: 'fa-openai-timeline', path: '/openai-timeline' }, { id: 'openAITimeline', icon: 'fa-openai-timeline', path: '/openai-timeline' },
{ id: 'modelPrice', icon: 'fa-model-price', path: '/llm-model-price' }, { id: 'modelPrice', icon: 'fa-model-price', path: '/llm-model-price' },
]; ];
......
@import url('https://fonts.googleapis.com/css2?family=Dancing+Script&family=Indie+Flower&display=swap');
@font-face {
font-family: 'XINYE';
src: url('../data/handwrite/fonts/new-leaf.otf');
}
@font-face {
font-family: 'cicada';
src: url('../data/handwrite/fonts/cicada.ttf');
}
@font-face {
font-family: 'xiongdi';
src: url('../data/handwrite/fonts/xiongdi.ttf');
}
@font-face {
font-family: 'qishan-zhong';
src: url('../data/handwrite/fonts/qishan-zhong.ttf');
}
body, html, #root {
height: 100%;
margin: 0;
}
.site-layout-background {
background: #fff;
}
.preview-area {
background-color: #fff;
border-radius: 4px;
overflow: auto;
}
.settings-section {
padding: 24px;
}
.form-group {
margin-bottom: 16px;
}
.form-group label {
font-weight: bold;
}
.ant-input-number, .ant-input, .ant-select-selector {
width: 100%;
}
.ant-slider {
width: 100%;
}
.ant-btn {
margin-top: 16px;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment