[c#] Lettertype gebruiken die niet geinstalleerd is

Pagina: 1
Acties:
  • 711 views

Acties:
  • 0 Henk 'm!

  • mike643
  • Registratie: Maart 2005
  • Laatst online: 22-04 19:13
Ik vraag me af of het mogelijk is om in mijn programma een lettertype (Hamilton-Light.otf) te gebruiken zonder dat hij geinstalleerd is op de pc? Het is namelijk niet mogelijk om lettertypes op de desbetreffende pc te installeren, maar ik wil hem wel graag gebruiken.

Acties:
  • 0 Henk 'm!

  • degroot
  • Registratie: December 2003
  • Niet online
Oplossing lijkt me simpel.
Maak een applicatie met 1 label met dat lettertype , en probeer het uit.
Antwoord heb je direct(aannemende dat je weet dat er op die pc geen lettertype's geinstalleerd kunnen worden , is die machine waarschijnljk in de buurt en kun je het eens testen)

www.degroot-it.nl


Acties:
  • 0 Henk 'm!

  • mike643
  • Registratie: Maart 2005
  • Laatst online: 22-04 19:13
degroot schreef op vrijdag 14 november 2008 @ 18:10:
Oplossing lijkt me simpel.
Maak een applicatie met 1 label met dat lettertype , en probeer het uit.
Antwoord heb je direct(aannemende dat je weet dat er op die pc geen lettertype's geinstalleerd kunnen worden , is die machine waarschijnljk in de buurt en kun je het eens testen)
Nee dat heb ik al getest, ik vraag me juist af of er een andere oplossing hiervoor is, bijvoorbeeld het lettertype bestand in de zelfde folder als het programma te zetten, en op één of andere manier aanroepen in het programma

Acties:
  • 0 Henk 'm!

  • Kappie
  • Registratie: Oktober 2000
  • Laatst online: 26-09 12:05

Kappie

Tell me your secrets...

Maak een (tranparante) afbeelding met de tekst in het gewenste lettertype en zet dit in je applicatie. Dit werkt uiteraard alleen voor statische teksten.

Edit: dynmisch teksten zou je kunnen maken door zelf het label te renderen of samen te stellen door allemaal kleine afbeeldingen (1 per letter) naast elkaar te plaatsen.

[ Voor 36% gewijzigd door Kappie op 14-11-2008 18:17 ]

He does fit the profile perfectly. He's intelligent, but an under-achiever; alienated from his parents; has few friends. Classic case for recruitment by the Soviets.


Acties:
  • 0 Henk 'm!

  • mike643
  • Registratie: Maart 2005
  • Laatst online: 22-04 19:13
Kappie schreef op vrijdag 14 november 2008 @ 18:15:
Maak een (tranparante) afbeelding met de tekst in het gewenste lettertype en zet dit in je applicatie. Dit werkt uiteraard alleen voor statische teksten.

Edit: dynmisch teksten zou je kunnen maken door zelf het label te renderen of samen te stellen door allemaal kleine afbeeldingen (1 per letter) naast elkaar te plaatsen.
Oke, maar het gaat erom dat er in een textvak een prijs wordt ingevoerd en dat die prijs wordt weergegeven in een printpreviewdiaglog waarin het moet weergegeven worden in Hamilton light. Moeilijk dus om dan met labels te werken. Maar bedankt voor het idee

Acties:
  • 0 Henk 'm!

  • BastiaanN
  • Registratie: September 2003
  • Niet online
http://www.bobpowell.net/embedfonts.htm
VB voorbeeldje maar met een kleine moeite kun je dit wel vertalen naar c# :)

Strava | :-( + ┌(^0^)┘= :-)


Acties:
  • 0 Henk 'm!

  • mike643
  • Registratie: Maart 2005
  • Laatst online: 22-04 19:13
BastiaanN schreef op vrijdag 14 november 2008 @ 18:38:
http://www.bobpowell.net/embedfonts.htm
VB voorbeeldje maar met een kleine moeite kun je dit wel vertalen naar c# :)
Oké dank je wel. Ik ben niet zo sterk in zowel VB als c# maar ik ga het voor elkaar proberen te krijgen.

Acties:
  • 0 Henk 'm!

  • CMG
  • Registratie: Februari 2002
  • Laatst online: 10-12-2024

CMG

BastiaanN schreef op vrijdag 14 november 2008 @ 18:38:
http://www.bobpowell.net/embedfonts.htm
VB voorbeeldje maar met een kleine moeite kun je dit wel vertalen naar c# :)
Als je ff op het C# logotje klikt op die site staat de code er gewoon in C# ;)

NKCSS - Projects - YouTube


Acties:
  • 0 Henk 'm!

  • BastiaanN
  • Registratie: September 2003
  • Niet online
CMG schreef op vrijdag 14 november 2008 @ 22:20:
[...]

Als je ff op het C# logotje klikt op die site staat de code er gewoon in C# ;)
Dus.... :/ :+

Strava | :-( + ┌(^0^)┘= :-)


Acties:
  • 0 Henk 'm!

Verwijderd

Ehmmm... Ook al kun je een font embedden, dan wil dat nog niet zeggen dat 't mag.
Hamilton Light heeft een vrij duidelijke license ($31 per CPU), en ik denk niet dat ze blij zijn met embedded verspreiding... Omzetten naar een plaatje op een server die een geldige licentie heeft zal geen probleem zijn denk ik, maar zomaar een font embedden: zoek dan eerst even goed uit of 't mag...

Acties:
  • 0 Henk 'm!

  • BastiaanN
  • Registratie: September 2003
  • Niet online
Verwijderd schreef op zaterdag 15 november 2008 @ 22:22:
Ehmmm... Ook al kun je een font embedden, dan wil dat nog niet zeggen dat 't mag.
Hamilton Light heeft een vrij duidelijke license ($31 per CPU), en ik denk niet dat ze blij zijn met embedded verspreiding... Omzetten naar een plaatje op een server die een geldige licentie heeft zal geen probleem zijn denk ik, maar zomaar een font embedden: zoek dan eerst even goed uit of 't mag...
EMBEDDING RESTRICTED (a) Except as may be specifically permitted herein, all embedding and transmission of the Font Software is prohibited.

..

Licensee is not permitted to distribute documents using or containing embedded copies of the Font Software on the internet or for other forms of distribution or downloading to unauthorized users. Such activities require the purchase of a license upgrade. If you wish to publish documents created by the embedding of the Font Software on the internet or wish to otherwise distribute or make such documents available for downloading to parties not licensed under this Agreement, you must contact Font Bureau to purchase the appropriate license upgrade.
Embedden mag inderdaad niet eens tenzij je weer een (waarschijnlijk) duurdere license koopt

[ Voor 30% gewijzigd door BastiaanN op 15-11-2008 22:56 ]

Strava | :-( + ┌(^0^)┘= :-)


Acties:
  • 0 Henk 'm!

  • mike643
  • Registratie: Maart 2005
  • Laatst online: 22-04 19:13
BastiaanN schreef op vrijdag 14 november 2008 @ 18:38:
http://www.bobpowell.net/embedfonts.htm
VB voorbeeldje maar met een kleine moeite kun je dit wel vertalen naar c# :)
Ik geprobeerd om van de bovenstaande website het embedden van de lettertype werkend te krijgen. Ik heb nu dit:
PrivateFontCollection pfc = new PrivateFontCollection();

private void Form1_Load(object sender, EventArgs e)
{
Stream fontStream = this.GetType().Assembly.GetManifestResourceStream("embedfont.ironman.ttf");


byte[] fontdata = new byte[fontStream.Length];

fontStream.Read(fontdata, 0, (int)fontStream.Length);

fontStream.Close();

unsafe
{

fixed (byte* pFontData = fontdata)
{

pfc.AddMemoryFont((System.IntPtr)pFontData, fontdata.Length);

}

}
}
Ik krijg maar steeds de volgende error m.b.t deze line byte[] fontdata = new byte[fontStream.Length];
Object reference not set to an instance of an object.

Hoe kan ik dit oplossen?

Acties:
  • 0 Henk 'm!

  • CoolGamer
  • Registratie: Mei 2005
  • Laatst online: 10:16

CoolGamer

What is it? Dragons?

Ik denk dat de volgende regel null als resultaat geeft:
code:
1
Stream fontStream = this.GetType().Assembly.GetManifestResourceStream("embedfont.ironman.ttf");

En dan blijft fontStream null en krijg je een exception.
Klopt de bestandsnaam die je opgeeft op die regel?

¸.·´¯`·.¸.·´¯`·.¸><(((º>¸.·´¯`·.¸><(((º>¸.·´¯`·.¸.·´¯`·.¸.·´¯`·.¸<º)))><¸.·´¯`·.¸.·´¯`·.¸.·´¯`·.¸


Acties:
  • 0 Henk 'm!

  • mike643
  • Registratie: Maart 2005
  • Laatst online: 22-04 19:13
TheCoolGamer schreef op zondag 23 november 2008 @ 16:26:
Ik denk dat de volgende regel null als resultaat geeft:
code:
1
Stream fontStream = this.GetType().Assembly.GetManifestResourceStream("embedfont.ironman.ttf");

En dan blijft fontStream null en krijg je een exception.
Klopt de bestandsnaam die je opgeeft op die regel?
Ja daar dacht ik ook aan, maar dit is gewoon correct, heb het lettertype toegevoegd aan de solution

Acties:
  • 0 Henk 'm!

  • CoolGamer
  • Registratie: Mei 2005
  • Laatst online: 10:16

CoolGamer

What is it? Dragons?

In GetManifestResourceStream("embedfont.ironman.ttf"); moet je embedfont veranderen naar de naam van je project (hoofdlettergevoelig). Ook moet je bij het lettertype de Build Action op "Embedded Resource" zetten.

Maar is het niet makkelijker om gewoon de AddFontFile(String filename) methode te gebruiken van een instantie van PrivateFontCollection?

[ Voor 24% gewijzigd door CoolGamer op 23-11-2008 21:58 ]

¸.·´¯`·.¸.·´¯`·.¸><(((º>¸.·´¯`·.¸><(((º>¸.·´¯`·.¸.·´¯`·.¸.·´¯`·.¸<º)))><¸.·´¯`·.¸.·´¯`·.¸.·´¯`·.¸


Acties:
  • 0 Henk 'm!

  • Haan
  • Registratie: Februari 2004
  • Laatst online: 10:32

Haan

dotnetter

mike643 schreef op zondag 23 november 2008 @ 20:35:
[...]

Ja daar dacht ik ook aan, maar dit is gewoon correct, heb het lettertype toegevoegd aan de solution
Het is in ieder geval nogal basic debug-werk om te kijken of die stream null is of niet ;)

Kater? Eerst water, de rest komt later


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
En anders kijk je even met GetManifestResourceNames welke resources er allemaal in je Assembly zitten.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 09:32

Janoz

Moderator Devschuur®

!litemod

Je hebt nu al meer dan genoeg handvatten gekregen om je probleem om te lossen waardoor dit topic nu eigenlijk meer een 'debug mijn draadje' wordt. Ook een 'jamaar dit is gewoon correct' zonder ook daadwerkelijk te controleren of het klopt. Je bent al eerder gewezen op het ontbreken van wat eigen inzet en tot slot is het helemaal niet toegestaan om dit font te embedden.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'

Pagina: 1

Dit topic is gesloten.