Faits: Faits: A. Par jugement du 10 avril 2000, le Tribunal correctionnel de l'arrondissement de Lausanne a reconnu X._ coupable de discrimination raciale (art. 261bis CP) notamment pour avoir publié dans la revue « Z._ » trois articles intitulés « La question juive », « Je ne crois pas aux chambres à gaz » et « Vive le révisionnisme ». Il l'a condamné de ce fait à la peine d'un an d'emprisonnement. La Cour de cassation pénale du Tribunal cantonal du canton de Vaud a admis partiellement le recours formé par X._ contre ce jugement, et réduit la peine à trois mois d'emprisonnement. Le 16 octobre 2001, le Tribunal fédéral a pour partie rejeté et pour partie déclaré irrecevable le pourvoi en nullité et rejeté dans la mesure où il était recevable le recours de droit public formés contre cet arrêt (cause 6S.399/2001 et 6P.92/2001). En juin 2000, la revue « Z._ » a publié une critique du jugement du 10 avril 2000, en reproduisant textuellement les trois articles qui avaient donné lieu au verdict de condamnation. En août 2000, l'association Y._ a diffusé une brochure intitulée « Le procès X._: une parodie de justice », qui contient les textes incriminés. A raison de ces publications, une nouvelle procédure pénale pour violation de l'art. 261bis CP a été ouverte notamment à l'encontre de X._. Le 22 mai 2002, le Tribunal pénal de la Veveyse a reconnu X._ coupable de discrimination raciale et l'a condamné à la peine de trois mois d'emprisonnement, complémentaire à celle infligée le 20 novembre 2001. Par arrêt du 27 mars 2003, la Cour d'appel pénal du Tribunal cantonal de l'Etat de Fribourg a rejeté l'appel formé par X._ contre le jugement du 22 mai 2002, qu'elle a confirmé pour ce qui le concerne. Par arrêt du 27 mars 2003, la Cour d'appel pénal du Tribunal cantonal de l'Etat de Fribourg a rejeté l'appel formé par X._ contre le jugement du 22 mai 2002, qu'elle a confirmé pour ce qui le concerne. B. Agissant par la voie du recours de droit public, X._ demande au Tribunal fédéral d'annuler l'arrêt du 27 mars 2003. Il invoque l'art. 9 Cst., ainsi que les art. 10 et 17 CEDH. Le Tribunal cantonal se réfère à son arrêt. Le Ministère public conclut au rejet du recours. Invité à répliquer, le recourant a maintenu ses conclusions. 