font project update

This commit is contained in:
ed barz 2023-05-25 16:05:03 +02:00
parent 120afd23c5
commit b7c484434c
3 changed files with 295 additions and 51 deletions

View File

@ -1,25 +1,74 @@
Vue.component('fontpicker', {
template: `
<span
class="style-pick"
v-on:click="toggle"
v-bind:class="{ 'tagged': tag.isTrue}">
<slot></slot>
</span>
`,
props: ['tag'],
methods: {
toggle() {
vm.$data.isFresh = false
this.tag.isTrue = !this.tag.isTrue
}
}
})
Vue.component('fontdemo', { Vue.component('fontdemo', {
template: ` template: `
<div class="single-font"> <div class="single-font" v-show="typeface.tags.some(o => o.isTrue === true) || fresh">
<p :style="{ 'font-family': typeface.name }"> <p :style="{
'font-family': typeface.name,
'font-size' : this.fontSize,
'font-weight' : this.fontWeight,
'font-style' : this.fontStyle
}">
<slot></slot> <slot></slot>
</p> </p>
<footer> <footer>
<section class="font-weights">
<span
v-for="weight in weights"
:style="{ 'font-weight': weight }"
v-on:click="setWeight(weight)"
>{{ weight }}</span>
<span
v-if="hasItalic"
class="brz9-icon-italic"
v-on:click="fontStyle = fontStyle == 'normal' ? 'italic' : 'normal'"
></span>
</section>
<section class="font-name">
<span class="font-name">{{ typeface.name }} - </span> <span class="font-name">{{ typeface.name }} - </span>
<span class="copy-css" v-on:click="copyToClipboard()">Copy CSS Link import</span> <span class="copy-css" v-on:click="copyToClipboard()">Copy CSS Link import</span>
<span <span
class="copy-icon-popup" class="copy-icon-popup"
v-bind:class="{ 'success': isCopied}" v-bind:class="{ 'success': isCopied}"
ref="element">Copied!</span> ref="element">Copied!</span>
</section>
</footer> </footer>
</div> </div>
`, `,
props: ['typeface'], props: ['typeface', 'fresh', 'size'],
data() { data() {
return { return {
hasItalic: false,
isCopied: false, isCopied: false,
linkText: '<link rel="stylesheet" href="https://file.brz9.dev/cdn/fonts/base/', linkText: '<link rel="stylesheet" href="https://file.brz9.dev/cdn/fonts/base/',
linkTextEnd: '">' linkTextEnd: '">',
fontWeight: 400,
fontStyle: "normal",
weights : []
}
},
computed: {
fontSize () {
return this.size + "rem";
} }
}, },
methods: { methods: {
@ -38,36 +87,31 @@ Vue.component('fontdemo', {
this.$refs.element.addEventListener('animationend', () => { this.$refs.element.addEventListener('animationend', () => {
this.isCopied = false; this.isCopied = false;
}); });
},
setWeight(weight) {
this.fontWeight = weight;
}
},
mounted() {
this.weights = this.typeface.fonts.filter(function(weight) {
return weight.indexOf("i") == -1;
});
this.weights.sort(function(a, b) {
return a - b;
});
if (this.typeface.fonts.some(o => o.indexOf("i") > -1)) {
this.hasItalic = true;
}
} }
}
}) })
let vm = new Vue({ let vm = new Vue({
methods: { methods: {
updateSelectedTags(tag) { fontSizeUp() {
if (this.selectedTags.includes(tag)) { this.fontSize += 0.2;
this.selectedTags.splice(this.selectedTags.indexOf(tag), 1);
} else {
this.selectedTags.push(tag);
}
this.updateSelection();
}, },
add2selection(tag) { fontSizeDown() {
this.typefaceList.forEach(typeface => { this.fontSize -= 0.2;
if (typeface.tags.includes(tag)) {
this.selection.push(typeface);
}
})
console.log(this.selection);
},
updateSelection() {
this.selection = [];
this.typefaceList.forEach(typeface => {
if (this.selectedTags.every(v => typeface.tags.includes(v))) {
this.selection.push(typeface);
}
})
console.log(this.selection);
} }
}, },
data() { data() {
@ -75,12 +119,28 @@ let vm = new Vue({
testText: "The quick brown fox jumps over the lazy dog", testText: "The quick brown fox jumps over the lazy dog",
selection : [], selection : [],
selectedTags: [], selectedTags: [],
isFresh: true,
fontSize: 2.0,
taglist: {
display: {isTrue : false},
graphic: {isTrue : false},
mono: {isTrue : false},
comic: {isTrue : false},
neogro: {isTrue : false},
artnouv : {isTrue : false},
hand : {isTrue : false},
condensed : {isTrue : false},
goth: {isTrue : false},
fancy: {isTrue : false},
allcaps: {isTrue : false},
retro: {isTrue : false},
},
alvania : { alvania : {
"name": "Alvania", name : "Alvania",
"fonts": [ fonts : [
"400", "400",
], ],
"tags": ["display","comic"], tags : [],
"link": "https://www.graphicpear.com/alvania-typeface/", "link": "https://www.graphicpear.com/alvania-typeface/",
"creator": "Angélica Cardona", "creator": "Angélica Cardona",
"creatorLink": "https://www.behance.net/angelicardona", "creatorLink": "https://www.behance.net/angelicardona",
@ -93,7 +153,7 @@ let vm = new Vue({
"fonts": [ "fonts": [
"400", "400",
], ],
"tags": ["display", "fancy"], "tags": [],
"link": "https://www.paratype.com/fonts/eb/ambidexter", "link": "https://www.paratype.com/fonts/eb/ambidexter",
"creator": "Egor Belozerov", "creator": "Egor Belozerov",
"creatorLink": "https://www.instagram.com/egaindahouse/", "creatorLink": "https://www.instagram.com/egaindahouse/",
@ -1264,7 +1324,6 @@ let vm = new Vue({
this.theboldfont, this.theboldfont,
this.leiko, this.leiko,
this.harbinger, this.harbinger,
this.kielo,
this.volumedealer, this.volumedealer,
this.leaguegothic, this.leaguegothic,
this.blankenburg, this.blankenburg,
@ -1275,7 +1334,6 @@ let vm = new Vue({
this.tropikal, this.tropikal,
this.saintregus, this.saintregus,
this.arturito, this.arturito,
this.monolith,
this.overpassmono, this.overpassmono,
this.banco, this.banco,
this.baldur, this.baldur,
@ -1288,10 +1346,8 @@ let vm = new Vue({
this.donjose, this.donjose,
this.werbedeutsch, this.werbedeutsch,
this.canobis, this.canobis,
this.nim,
this.hamlettertia, this.hamlettertia,
this.forta, this.forta,
this.trappist,
this.humane, this.humane,
this.wavehaus, this.wavehaus,
this.catreporter, this.catreporter,
@ -1299,7 +1355,6 @@ let vm = new Vue({
this.boston, this.boston,
this.surfingcapital, this.surfingcapital,
this.theater, this.theater,
this.montreau,
this.ambidexter, this.ambidexter,
this.marvinvisionsbig, this.marvinvisionsbig,
this.vercetti, this.vercetti,
@ -1310,13 +1365,10 @@ let vm = new Vue({
this.feastofflesh, this.feastofflesh,
this.lemonmilk, this.lemonmilk,
this.alvania, this.alvania,
this.communenuitdeboutpochoir,
this.doppelganger, this.doppelganger,
this.comictantrum, this.comictantrum,
this.blazed, this.blazed,
this.refuse,
this.ribes, this.ribes,
this.quakep,
this.vollkorn, this.vollkorn,
this.mdtall, this.mdtall,
this.hermanoaltoround, this.hermanoaltoround,
@ -1337,5 +1389,80 @@ let vm = new Vue({
return 0 return 0
} ) } )
this.selection = this.typefaceList this.selection = this.typefaceList
this.alvania.tags = [this.taglist.display, this.taglist.comic]
this.ambidexter.tags = [this.taglist.display, this.taglist.fancy]
this.archive.tags = [this.taglist.display, this.taglist.allcaps]
this.arturito.tags = [this.taglist.display]
this.avara.tags = [this.taglist.display]
this.avenirnext.tags = [this.taglist.neogro]
this.axis.tags = [this.taglist.display, this.taglist.allcaps]
this.baldur.tags = [this.taglist.display, this.taglist.artnouv, this.taglist.fancy]
this.banco.tags = [this.taglist.display, this.taglist.allcaps, this.taglist.graphic]
this.bizon.tags = [this.taglist.display, this.taglist.allcaps]
this.blankenburg.tags = [this.taglist.display, this.taglist.goth]
this.blazed.tags = [this.taglist.display, this.taglist.graphic]
this.bondi.tags = [this.taglist.display, this.taglist.allcaps]
this.boston.tags = [this.taglist.display, this.taglist.retro]
this.catreporter.tags = [this.taglist.display, this.taglist.comic]
this.canobis.tags = [this.taglist.display, this.taglist.fancy, this.taglist.artnouv]
this.cherish.tags = [this.taglist.display, this.taglist.hand]
this.comictantrum.tags = [this.taglist.display, this.taglist.comic, this.taglist.goth]
this.communenuitdebout.tags = [this.taglist.display, this.taglist.condensed]
this.communenuitdeboutpochoir.tags = [this.taglist.display, this.taglist.condensed]
this.disket.tags = [this.taglist.display, this.taglist.allcaps]
this.donjose.tags = [this.taglist.display, this.taglist.allcaps]
this.doppelganger.tags = [this.taglist.display, this.taglist.fancy, this.taglist.artnouv]
this.envycoder.tags = [this.taglist.mono]
this.feastofflesh.tags = [this.taglist.graphic]
this.forta.tags = [this.taglist.display, this.taglist.allcaps]
this.grobedeutschmeister.tags = [this.taglist.goth]
this.gulfsdisplay.tags = [this.taglist.display]
this.hamletcicero.tags = [this.taglist.goth]
this.hamlettertia.tags = [this.taglist.goth]
this.harbinger.tags = [this.taglist.display, this.taglist.allcaps]
this.hermanoaltoround.tags = [this.taglist.display, this.taglist.condensed]
this.hermit.tags = [this.taglist.mono]
this.humane.tags = [this.taglist.display, this.taglist.condensed]
this.imposible.tags = [this.taglist.graphic]
this.inter.tags = [this.taglist.neogro]
this.kielo.tags = [this.taglist.display]
this.laborunion.tags = [this.taglist.display, this.taglist.allcaps]
this.leaguegothic.tags = [this.taglist.display]
this.leaguegothiccondensed.tags = [this.taglist.display, this.taglist.condensed]
this.leiko.tags = [this.taglist.serif]
this.lemonmilk.tags = [this.taglist.display, this.taglist.allcaps]
this.mdtall.tags = [this.taglist.display, this.taglist.allcaps, this.taglist.condensed]
this.mamenchisa.tags = [this.taglist.graphic]
this.mammutcat.tags = [this.taglist.graphic, this.taglist.comic]
this.margaret.tags = [this.taglist.serif]
this.marvinvisionsbig.tags = [this.taglist.display, this.taglist.allcaps]
this.mersad.tags = [this.taglist.neogro]
this.milkcarton.tags = [this.taglist.display, this.taglist.comic]
this.misto.tags = [this.taglist.display, this.taglist.comic]
this.montrappist.tags = [this.taglist.display]
this.mononoki.tags = [this.taglist.mono]
this.newake.tags = [this.taglist.display]
this.overpassmono.tags = [this.taglist.mono]
this.planck.tags = [this.taglist.display]
this.rafigen.tags = [this.taglist.display]
this.remboy.tags = [this.taglist.display, this.taglist.artnouv]
this.resin.tags = [this.taglist.display, this.taglist.allcaps]
this.ribes.tags = [this.taglist.display]
this.roboto.tags = [this.taglist.neogro]
this.rousseaudeco.tags = [this.taglist.display, this.taglist.fancy, this.taglist.artnouv]
this.saintregus.tags = [this.taglist.display]
this.sonderregular.tags = [this.taglist.display, this.taglist.fancy]
this.surfingcapital.tags = [this.taglist.graphic]
this.theboldfont.tags = [this.taglist.display, this.taglist.allcaps]
this.theater.tags = [this.taglist.display, this.taglist.allcaps, this.taglist.condensed]
this.tintin.tags = [this.taglist.display, this.taglist.comic]
this.tropikal.tags = [this.taglist.display, this.taglist.fancy]
this.ustroke.tags = [this.taglist.graphic]
this.vercetti.tags = [this.taglist.neogro]
this.vollkorn.tags = [this.taglist.serif]
this.volumedealer.tags = [this.taglist.graphic]
this.wavehaus.tags = [this.taglist.neogro]
this.werbedeutsch.tags = [this.taglist.goth]
//this..tags = [this.taglist.]
} }
}).$mount('#root') }).$mount('#root')

View File

@ -11,25 +11,108 @@
</head> </head>
<body> <body>
<nav>
<section id="left-nav">
<a href="/">
<span class="byl-icon-home"></span>
</a>
<a href="/proj">
<span>/projets</span>
</a>
</section>
</nav>
<div id="root"> <div id="root">
<main> <main>
<h3>Fonts</h3> <h3>Fonts</h3>
<input class="font-input" v-model="testText" placeholder="Your text"/> <input class="font-input" v-model="testText" placeholder="Your text"/>
<nav class="font-nav"> <nav class="font-nav">
<span class="style-pick" v-on:click="updateSelectedTags('graphic')">Graphic</span> <fontpicker :tag="taglist.display">Display</fontpicker>
<fontpicker :tag="taglist.condensed">Condensed</fontpicker>
<fontpicker :tag="taglist.graphic">Graphic</fontpicker>
<fontpicker :tag="taglist.fancy">Fancy</fontpicker>
<fontpicker :tag="taglist.comic">Comic</fontpicker>
<fontpicker :tag="taglist.mono">Mono</fontpicker>
</nav> </nav>
<h4>All the fonts</h4>
<nav class="font-control">
<span class="brz9-icon-font-size"></span>
<span class="brz9-icon-plus" v-on:click="fontSizeUp"></span>
<span> / </span>
<span class="brz9-icon-minus" v-on:click="fontSizeDown"></span>
</nav>
<div class="font-container"> <div class="font-container">
<div class="font-content"> <div class="font-content">
<fontdemo v-for="font in this.selection" :typeface="font">{{ testText }}</fontdemo> <fontdemo v-for="font in this.selection" :typeface="font"
v-bind:fresh="isFresh"
v-bind:size="fontSize"
>{{ testText }}</fontdemo>
</div> </div>
</div> </div>
</main> </main>
</div> </div>
<footer>
<section id="social">
<a href="/feed.xml">
<span class="byl-icon-rss"></span>
</a>
<a rel="me" href="https://mamot.fr/@edardach" target="_blank">
<span class="byl-icon-mastodon"></span>
</a>
<!--
<a href="https://www.instagram.com/edbrz9/"
target="_blank">
<span class="byl-icon-instagram"></span>
</a>
<a href="https://twitter.com/edbrz9"
target="_blank">
<span class="byl-icon-twitter"></span>
</a>
-->
<a href="https://git.brz9.dev/ed"
target="_blank">
<span class="byl-icon-git"></span>
</a>
<!--
<a href="">
<a rel="me" href="https://mamot.fr/@edardach">
<span class="byl-icon-mastodon"></span>
</a>
<a href="">
<span class="byl-icon-tiktok"></span>
</a>
-->
<a href="/BTC">
<span class="byl-icon-bitcoin"></span>
</a>
<a href="/ETH">
<span class="byl-icon-ethereum"></span>
</a>
<a href="/XMR">
<span class="byl-icon-monero"></span>
</a>
</section>
<section id ="mail">
<p>ed<span class="132">ehbb</span>@<span class="lskd">dllls</span>brz9.dev</p>
</section>
<section id="license">
<a href="https://creativecommons.org/licenses/by-sa/4.0/" target="_blank">
<img class="cc-link" src="/assets/svg/edbz9-cc-by-sa.svg"/>
</a>
</section>
</footer>
</body> </body>
<script src="https://ed.brz9.dev/assets/js/vue.min.js"></script> <script src="https://ed.brz9.dev/assets/js/vue.min.js"></script>

View File

@ -116,7 +116,7 @@ h2 {
} }
input.font-input { input.font-input {
width: 30vw; width: 20vw;
background-color: rgba(0,0,0,0); background-color: rgba(0,0,0,0);
border: none; border: none;
color: inherit; color: inherit;
@ -137,11 +137,12 @@ nav.font-nav span.style-pick {
color: var(--fg); color: var(--fg);
padding: 5px; padding: 5px;
font-weight: 500; font-weight: 500;
font-size: 1rem;
border: 5px solid var(--fg); border: 5px solid var(--fg);
cursor: pointer; cursor: pointer;
} }
nav.font-nav span.style-pick.selected { nav.font-nav span.style-pick.tagged {
background-color: var(--fg); background-color: var(--fg);
color: black; color: black;
mix-blend-mode: lighten; mix-blend-mode: lighten;
@ -154,10 +155,11 @@ div.single-font p {
font-style: normal; font-style: normal;
margin: 0px; margin: 0px;
margin-bottom: 10px; margin-bottom: 10px;
line-height: 150%;
padding-top: 5px;
} }
div.single-font footer { div.single-font footer {
text-align: right;
margin: 0px; margin: 0px;
padding: 0px; padding: 0px;
margin-bottom: -15px; margin-bottom: -15px;
@ -172,6 +174,8 @@ div.single-font span {
div.single-font { div.single-font {
border: 5px solid var(--fg); border: 5px solid var(--fg);
border-left: none;
border-right: none;
padding: 15px; padding: 15px;
margin-bottom: -5px; margin-bottom: -5px;
} }
@ -182,12 +186,13 @@ div.single-font footer span.copy-css {
div.single-font footer span.copy-icon-popup { div.single-font footer span.copy-icon-popup {
padding: 10px; padding: 10px;
translate: -30px; translate: -100px;
} }
.font-container { .font-container {
position: relative; position: relative;
max-height: 60vh; max-height: 60vh;
min-height: 200px;
overflow-y: scroll; overflow-y: scroll;
overflow-x: hidden; overflow-x: hidden;
} }
@ -200,13 +205,13 @@ div.single-font footer span.copy-icon-popup {
.font-container::-webkit-scrollbar-track .font-container::-webkit-scrollbar-track
{ {
border-right: 5px solid var(--fg); border-right: 5px solid var(--fg);
border-left: none; border-left: 5px solid var(--fg);
background-color: rgba(0,0,0,0); background-color: rgba(0,0,0,0);
} }
.font-container::-webkit-scrollbar .font-container::-webkit-scrollbar
{ {
width: 15px; width: 20px;
background-color: rgba(0,0,0,0); background-color: rgba(0,0,0,0);
} }
@ -216,13 +221,14 @@ div.single-font footer span.copy-icon-popup {
} }
.font-container{ .font-container{
scrollbar-width: 15px; scrollbar-width: 5px;
scrollbar-color: var(--fg) rgba(255,255,255,0.1); scrollbar-color: rgba(0,0,0,0.5) var(--fg)
} }
.font-container { .font-container {
border-top: 5px solid var(--fg); border-top: 5px solid var(--fg);
border-bottom: 5px solid var(--fg); border-bottom: 5px solid var(--fg);
border-left: 5px solid var(--fg);
} }
.font-content { .font-content {
@ -230,5 +236,33 @@ div.single-font footer span.copy-icon-popup {
margin-bottom: -20px; margin-bottom: -20px;
overflow-y: hidden; overflow-y: hidden;
overflow-x: hidden; overflow-x: hidden;
}
nav.font-control {
margin-left: 0px;
margin-bottom: 20px;
}
nav.font-control {
margin-left: 0px;
margin-bottom: 20px;
}
nav.font-control .brz9-icon-plus, nav.font-control .brz9-icon-minus {
cursor: pointer;
}
div.single-font footer section {
display: inline-block;
}
div.single-font footer {
display: flex;
flex-direction: row;
justify-content: space-between;
}
section.font-weights span {
margin-right: 10px;
cursor: pointer;
} }