Faits :
A.
A.a. A._, né en 1957, a travaillé en qualité de menuisier d'atelier pour le compte de la société B._ SA. A ce titre, il était assuré obligatoirement contre le risque d'accident auprès de la Caisse nationale suisse d'assurance en cas d'accidents (ci-après: la CNA). Le 24 décembre 2010, il a subi une lésion transfixiante de la coiffe des rotateurs de l'épaule gauche lors d'une chute survenue alors qu'il promenait son chien. Il a repris son activité professionnelle dès le 9 février 2011 à hauteur de 70 % en raison de la persistance des douleurs. Le 7 juin 2011, il a été victime d'une tendinopathie rupturée antéro-supérieure de la coiffe des rotateurs de l'épaule droite lors d'une chute sur son lieu de travail. La CNA a pris en charge les deux accidents.
A._ a été opéré de l'épaule gauche le 22 novembre 2011 et de l'épaule droite le 10 juillet 2012. Ces interventions ont entraîné de nouvelles périodes d'incapacité de travail. L'assuré a été licencié par son employeur avec effet au 30 avril 2013. Il a entrepris des séances de physiothérapie dès le mois de janvier 2013. Puis, sur proposition du docteur C._, spécialiste en médecine physique et réadaptation et rhumatologie et médecin d'arrondissement à la CNA, il a séjourné à la Clinique romande de réadaptation (CRR) du 18 juin au 23 août 2013 aux fins de complément de rééducation et d'évaluations multidisciplinaire et professionnelle. A l'issue de ce séjour, les médecins de cet établissement ont indiqué que la reprise de l'ancienne activité était illusoire en raison des limitations fonctionnelles constatées. Le docteur C._ a confirmé que l'assuré n'était plus en mesure d'exercer son ancienne profession de menuisier. Il a en revanche considéré qu'il était capable de travailler à 100 % sans baisse de rendement dans une activité adaptée aux limitations fonctionnelles imposées par les deux épaules (rapport du 14 octobre 2013). Il a en outre estimé à 25 % le taux de l'indemnité pour atteinte à l'intégrité (IPAI) découlant de l'accident (rapport du 21 octobre 2013).
En raison de la persistance des douleurs, A._ a été soumis à deux arthro-IRM. La première, de l'épaule droite, a mis en évidence une augmentation de la déchirure du tendon sous-scapulaire (rapport du 24 février 2014). La deuxième, de l'épaule gauche, a montré une redéchirure transfixiante de petite taille de la partie postérieure et distale du tendon supra-épineux (rapport du 4 mars 2014). L'assuré a de nouveau été opéré de l'épaule droite le 12 août 2014, et de l'épaule gauche, le 6 octobre 2015.
Le 17 août 2016, la doctoresse D._, spécialiste en neurochirurgie et médecin d'arrondissement à la CNA a examiné l'intéressé. Elle a estimé que le cas était stabilisé et que A._ disposait d'une capacité de travail nulle dans son ancienne activité, mais entière et sans baisse de rendement dans une activité adaptée aux limitations fonctionnelles suivantes: pas de port de charges de plus de 3-4 kg, aucun soulèvement de charges en dessus de l'horizontale ou avec les bras tendus, ni de mouvements de rotation répétitifs, pas de travail avec des machines générant des vibrations et pas d'utilisation d'échafaudages. Elle a en outre confirmé le taux de l'IPAI de 25 % retenu par le docteur C._ le 21 octobre 2013. Sur cette base, la CNA a informé A._, le 26 octobre 2016, qu'elle mettait fin au paiement des soins médicaux et de l'indemnité journalière avec effet au 31 décembre 2016, tout en continuant de prendre en charge les séances de physiothérapie durant environ encore six mois depuis le dernier examen.
Par décision du 16 décembre 2016, la CNA lui a alloué une rente d'invalidité fondée sur un taux d'incapacité de gain de 20 % à partir du 1er janvier 2017, ainsi qu'une indemnité pour atteinte à l'intégrité de 25 %. A l'appui de son opposition contre ce prononcé, A._ a produit un rapport du docteur E._, spécialiste en orthopédie (rapport du 22 juin 2017) et deux rapports du docteur F._, spécialiste en médecine générale et médecin traitant (rapports des 1er août et 11 septembre 2017). La CNA a rejeté l'opposition dans une décision du 12 janvier 2018.
A.b. De son côté, par projet du 17 mars 2017, l'Office AI du canton de Fribourg a reconnu à l'assuré le droit à une rente entière du 1er février 2012 au 31 août 2016, celle-ci étant supprimée dès le 1er septembre 2016 sur la base d'un degré d'invalidité évalué à 14 %.
B.
A._ a déféré la décision sur opposition de la CNA à la Cour des assurances sociales du Tribunal cantonal fribourgeois, en concluant à l'octroi d'une rente basée sur un taux d'invalidité de 65 %. A l'appui de sa réponse, la CNA a fait parvenir un rapport de la doctoresse G._, spécialiste en chirurgie générale et traumatologie de son centre de compétence (rapport du 15 mars 2018).
Par jugement du 30 juillet 2018, la cour cantonale a partiellement admis le recours, en reconnaissant le droit de l'assuré à une indemnité pour atteinte à l'intégrité de 35 %. Elle a confirmé la décision sur opposition du 12 janvier 2018 pour le surplus.
C.
C.a. A._ (ci-après: le recourant) forme un recours en matière de droit public en concluant à l'annulation partielle du jugement cantonal et au renvoi de la cause à l'autorité cantonale pour complément d'instruction médicale et nouvelle décision concernant le degré d'invalidité. Subsidiairement, il conclut à l'octroi d'une rente d'invalidité fondée sur un taux de 30 %, plus subsidiairement de 25 %.
C.b. La CNA (ci-après: la recourante) forme également un recours en matière de droit public. Elle conclut à l'annulation du jugement cantonal et au rétablissement de sa décision sur opposition du 12 janvier 2018 en tant qu'elle alloue à l'assuré une indemnité pour atteinte à l'intégrité de 25 %. Subsidiairement, elle demande le renvoi de la cause à l'autorité cantonale aux fins de respecter son droit d'être entendue s'agissant de l'augmentation de l'indemnité pour atteinte à l'intégrité.
C.c. Dans sa réponse, A._ reconnaît une erreur de l'autorité précédente et acquiesce partiellement aux conclusions du recours. Il conclut au renvoi de la cause à l'autorité précédente afin de respecter le droit d'être entendu de la CNA et demande à ce que les frais soient mis à la charge de l'Etat de Fribourg.
De son côté, la CNA conclut au rejet du recours de A._.
La cour cantonale et l'Office fédéral de la santé publique ont renoncé à se déterminer sur les recours.

Considérant en droit :
1.
Les recours sont dirigés contre un arrêt final (<ref-law>) rendu en matière de droit public (<ref-law>) par une autorité cantonale de dernière instance (art. 86 al. 1 let. d LTF). Ils ont été déposés dans le délai (<ref-law>) et la forme (<ref-law>) prévus par la loi. Ils sont donc recevables.
2.
Dans la mesure où les recours concernent les mêmes parties et le même complexe de fait, il y a lieu de joindre les causes 8C_605/2018 et 8C_639/2018 et de statuer sur celles-ci dans un seul arrêt.
3.
L'assuré conteste le taux de la rente d'invalidité fixé par la cour cantonale. La CNA s'en prend au taux de l'indemnité pour atteinte à l'intégrité. Dans les deux cas, il s'agit de prestations en espèces de l'assurance-accidents, de sorte que le Tribunal fédéral n'est pas lié par les faits établis par la juridiction précédente (<ref-law>).
4.
Les premiers juges ont tout d'abord constaté que dans son rapport du 22 juin 2017, le docteur E._ avait retenu des limitations fonctionnelles plus importantes que la doctoresse D._. Ils ont toutefois considéré que ces dernières ne permettaient pas de remettre en cause la conclusion du médecin d'arrondissement selon laquelle le recourant disposait d'une capacité de travail entière et sans baisse de rendement, dans une activité adaptée. En revanche - et de manière plus large que ce qu'avait retenu la CNA - la cour cantonale a indiqué que pour être adaptée, l'activité devait limiter le port de charges répétitif à 3-4 kg les bras le long du corps, à 2 kg jusqu'à hauteur d'épaules et jamais en dessus de l'horizontale ou avec des bras tendus. Les mouvements de rotation répétitifs devaient par ailleurs être évités, tout comme le travail avec des machines générant des vibrations ainsi que l'utilisation d'échafaudages. Enfin, en cas de travail à l'ordinateur, une place de travail ergonomique était nécessaire. L'autorité précédente a ensuite procédé à la comparaison des revenus avec et sans invalidité et est parvenue à la conclusion que le recourant présentait un degré d'invalidité de 20 %.
5.
L'assuré invoque une constatation manifestement erronée des faits (<ref-law>).
5.1. Dans un premier temps, il fait valoir que les différences entre les limitations fonctionnelles retenues par les docteurs E._ et F._ d'une part, et la doctoresse D._, d'autre part, étaient de nature à éveiller des doutes sérieux quant à la pertinence de l'avis du médecin d'arrondissement et auraient dû conduire les premiers juges à ordonner une expertise médicale.
Ce grief est mal fondé. La juridiction cantonale a tenu compte des différences de limitations fonctionnelles retenues par ces médecins et a expliqué que celles-ci ne remettaient toutefois pas en cause l'aptitude du recourant à travailler à 100 % dans une activité adaptée à ses limitations fonctionnelles. Or, cette appréciation est conforme aux avis des médecins qui se sont prononcés sur le cas. Ainsi, dans son rapport du 22 juin 2017, le docteur E._ indique que pour des activités adaptées aux limitations fonctionnelles - lesquelles coïncident avec celles retenues par les premiers juges - le temps de travail et le rendement seraient de 100 %. Quant au docteur F._, qui reconnaît, en somme, les mêmes limitations fonctionnelles que celles de la cour cantonale, il ne retient un taux d'activité réduit qu'au cas où celles-ci ne seraient pas respectées. Seule la remarque selon laquelle "une activité de type manuel, comportant des mouvements et positions du corps variés mais sans contrainte de poids ou de position statique prolongée serait concevable à un taux d'activité maximal de 50 %" diverge de l'appréciation de la juridiction cantonale. Toutefois, le docteur F._ n'apporte aucune explication à l'appui de cette affirmation, laquelle apparaît au demeurant contradictoire avec les limitations qu'il a constatées dans le même rapport (par exemple au point 1a où il indique que l'assuré pourrait porter des charges de 4 kg de façon répétitive pour un taux d'occupation maximale de 50 %). Enfin, dans son appréciation médicale du 15 mars 2018, la doctoresse G._ a elle aussi retenu une capacité de travail entière sans baisse de rendement dans une activité adaptée aux limitations fonctionnelles de l'assuré, lesquelles rejoignent entièrement celles reconnues par les premiers juges. Or, la doctoresse G._ a fondé son avis sur une anamnèse détaillée de l'assuré et en connaissance de toutes les pièces médicales du dossier, notamment les examens radiologiques et, en particulier, les avis des docteurs E._ et F._. Ses explications - dûment motivées et convaincantes - n'ont par ailleurs pas été remises en cause par le recourant.
Vu ce qui précède, la cour cantonale était fondée à retenir une capacité de travail à temps plein et sans baisse de rendement dans une activité adaptée aux limitations fonctionnelles de l'assuré, sans qu'il fût nécessaire d'ordonner une expertise médicale.
5.2. Dans un deuxième temps, le recourant s'en prend à trois des descriptions de postes de travail (DPT) (n°2135: petits montages/mécanique fine; n°11553: ouvrier; n°341319: rectifieur/tourneur) sur la base desquelles la juridiction précédente a retenu un revenu d'invalide de 61'200 fr. Il soutient qu'elles ne sont pas compatibles avec ses limitations fonctionnelles puisqu'elles impliquent de soulever fréquemment des charges allant jusqu'à 5 kg alors qu'il ne peut régulièrement soulever que 2 kg, et à l'aide de ses deux bras. D'après l'assuré, le docteur E._ aurait confirmé cette incompatibilité dès lors que, dans son rapport du 22 juin 2017, il a évalué entre 25 % et 50 % la diminution de rendement dans de tels postes de travail. Aussi - toujours selon l'assuré - les premiers juges auraient-ils dû calculer le revenu d'invalide en se basant sur les salaires statistiques de l'Enquête suisse sur la structure des salaires (ESS). Ils seraient ainsi parvenus à un taux d'invalidité de 30 % (revenu avec invalidité de 53'692 fr. [fondé sur l'ESS 2014, TA1_skill_level après adaptation de la durée hebdomadaire à 41,7 heures et compte tenu d'un abattement de 20 %] comparé au revenu sans invalidité de 76'470 fr.). L'assuré fait par ailleurs valoir qu'en tout état de cause, même s'il fallait admettre la compatibilité des DPT retenues par la cour cantonale avec ses limitations fonctionnelles, il y aurait lieu de prendre en compte le salaire minimum - et non moyen - prévu par ces DPT, afin de tenir compte de son grave handicap, de son âge, de son inactivité prolongée et de son absence de polyvalence professionnelle. Avec un revenu d'invalide de 57'300 fr. (57'200 + 58'500 + 58'500 + 58'500 + 53'800 / 5), on obtiendrait alors un taux d'invalidité de 25 %.
5.3. Les activités décrites dans les DPT ayant servi de référence dans la décision initiale doivent être compatibles avec l'état de santé de l'assuré pour qu'il soit admissible de s'y référer (cf. arrêt 8C_430/2014 in SVR UV n° 14 p. 43 consid. 4.4). Or tel et bien le cas en l'espèce. Si les DPT remises en cause par le recourant (petit montage/mécanique fine, ouvrier et rectifieur/tourneur) évoquent de manière générale le port de charges allant jusqu'à 5 kg - et sembleraient a priori contraires aux limitations fonctionnelles mentionnées par la cour cantonale - cette exigence physique n'a toutefois pas pour conséquence de rendre les postes en question incompatibles avec l'état de santé de l'assuré. En effet, il s'agit là de la première tranche de poids pouvant être portés ou soulevés par l'employé, soit des charges "très légères" et uniquement jusqu'à hauteur des hanches. Ainsi, le seul fait qu'il est indiqué que les charges peuvent s'élever jusqu'à 5 kg ne veut pas encore dire que l'intéressé - qui est en mesure de porter de manière répétitive des charges jusqu'à 3 à 4 kg - sera amené à porter ou à soulever des charges supérieures à 4 kg. Ceci est par ailleurs confirmé par la description des tâches des trois DPT. En effet, la première (n°2135: petits montages/mécanique fine) est décrite comme la fabrication, le montage et l'usinage de "petites pièces hors tolérance". La seconde (n°11553: ouvrier) implique de travailler pour l'essentiel sur des pièces qui pèsent "quelques grammes et dont les poids ne dépassent pas les 4 à 5 kg au total". Quant à la troisième (n°341319: rectifieur/tourneur), il est indiqué que les pièces sont "légères et n'atteignent que rarement 5 kg au maximum". Les trois DPT remises en cause respectent en outre les autres limitations fonctionnelles du recourant. Cela étant, la juridiction précédente était fondée à s'y référer. Au demeurant, contrairement à ce que soutient le recourant, on ne saurait s'écarter du salaire moyen, puisque les DPT prennent déjà en considération la situation particulière de l'assuré (<ref-ruling> consid. 4.2.3 p. 481 s.). Le revenu d'invalide fixé par la cour cantonale sur la base des cinq DPT produites - soit 61'200 fr. - n'est dès lors pas critiquable.
5.4. Compte tenu de ce qui précède, la juridiction cantonale a correctement fixé le degré d'invalidité du recourant.
Le recours de l'assuré est mal fondé et doit être rejeté.
6.
6.1. Invoquant la violation de l'art. 61 let. d LPGA et une constatation erronée des faits (<ref-law>), la CNA reproche à la juridiction cantonale d'avoir modifié à la hausse le taux de l'indemnité pour atteinte à l'intégrité de 25 % à 35 % alors que cette question n'était plus litigieuse. Elle fait en effet valoir que par son recours, l'assuré avait délimité l'objet de la contestation devant la juridiction cantonale à la question du droit à la rente uniquement; il n'avait pris aucune conclusion sur l'IPAI et avait expressément conclu à l'annulation partielle de la décision sur opposition du 12 janvier 2018 et à l'octroi d'une rente basée sur un taux d'invalidité de 65 %. Aussi, la juridiction cantonale avait-elle statué sur un point non litigieux, non soumis à son autorité, sans lien avec l'objet du litige et entré en force, de sorte que son jugement doit être annulé sur ce point. La recourante soutient au demeurant que si la cour cantonale entendait dépasser le cadre fixé par les conclusions des parties en modifiant à la hausse le taux de l'indemnité, au détriment de l'assureur-accidents, elle devait dans tous les cas lui donner l'occasion de se déterminer. En omettant de le faire, elle avait violé son droit d'être entendue.
6.2. L'objet du litige dans la procédure administrative subséquente est le rapport juridique qui - dans le cadre de l'objet de la contestation déterminé par la décision - constitue, d'après les conclusions du recours, l'objet de la décision effectivement attaqué. D'après cette définition, l'objet de la contestation et l'objet du litige sont identiques lorsque la décision administrative est attaquée dans son ensemble. En revanche, lorsque le recours ne porte que sur une partie des rapports juridiques déterminés par la décision, les rapports juridiques non contestés sont certes compris dans l'objet de la contestation, mais non pas dans l'objet du litige (<ref-ruling> consid. 2.1 p. 164; <ref-ruling> consid. 1b et 2 p. 414 et les références citées). Les questions qui - bien qu'elles soient visées par la décision administrative et fassent ainsi partie de l'objet de la contestation - ne sont plus litigieuses, d'après les conclusions du recours, et qui ne sont donc pas comprises dans l'objet du litige, ne sont examinées par le juge que s'il existe un rapport de connexité étroit entre les points non contestés et l'objet du litige (<ref-ruling> consid. 2a p. 244; <ref-ruling> consid. 2a p. 295; <ref-ruling> consid. 1a p. 99; <ref-ruling> consid. 3c p. 51 et les références; voir également <ref-ruling> consid. 2a p. 36).
6.3. En l'occurrence, en statuant - par sa décision du 16 décembre 2016 confirmée sur opposition le 12 janvier 2018 - sur le droit à une rente d'invalidité d'une part, et le droit à une indemnité pour atteinte à l'intégrité d'autre part, la recourante a statué sur deux rapports juridiques distincts sans lien de connexité (cf. notamment arrêt 8C_451/2009 du 18 août 2010 consid. 1.2). Dans la mesure où le recours formé par l'assuré devant la juridiction cantonale ne portait que sur la question de la rente, à l'exclusion de la question de l'indemnité pour atteinte à l'intégrité, la décision litigieuse était entrée en force sur ce point et les premiers juges ne pouvaient pas examiner cette question de leur propre chef. En étendant la procédure à la question de l'indemnité pour atteinte à l'intégrité, la juridiction cantonale a par conséquent violé le droit fédéral.
6.4. Le recours de la CNA se révèle bien fondé.
7.
Vu l'issue des litiges, les frais sont mis à la charge de l'assuré, qui succombe (<ref-law>). Il sera toutefois tenu compte de la prise de position du recourant, lequel n'est pas à l'origine de l'erreur du Tribunal cantonal qui s'est saisi d'office d'une décision non litigieuse (art. 66 al.1, 2e phrase, LTF).
La recourante n'a pas droit à des dépens (<ref-law>).

Par ces motifs, le Tribunal fédéral prononce :
1.
Les causes 8C_605/2018 et 8C_639/2018 sont jointes.
2.
Le recours de A._ est rejeté.
3.
Le recours de la CNA est admis. Le jugement de la Cour des assurances sociales du Tribunal cantonal du canton de Fribourg du 30 juillet 2018 est annulé en ce qui concerne l'indemnité pour atteinte à l'intégrité. La décision sur opposition du 12 janvier 2018 de la CNA est confirmée.
4.
Les frais, arrêtés à 800 fr., sont mis à la charge de l'assuré.
5.
Le présent arrêt est communiqué aux parties, à la Cour des assurances sociales du Tribunal cantonal du canton de Fribourg, et à l'Office fédéral de la santé publique.
Lucerne, le 22 mai 2019
Au nom de la Ire Cour de droit social
du Tribunal fédéral suisse
Le Président : Maillard
La Greffière : Paris